Archive

Archive for January, 2015

Facebook Login with Code Igniter

January 7, 2015 1 comment

Requirement:

  • Code Igniter 2
  • Facebook SDK 3.2.3 (consist of facebook.php & base_facebook.php, put them in libraries folder)

Controllers Code

  • application/controllers/user_auth.php (Handle login process)
    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    class User_auth extends MY_Controller
    {
        public function __construct()
        {
            parent::__construct();
        }
        
        private function load_fb()
        {
            $fb_config = array(
                'appId'  => $this->config->item('apps_facebook_id'),
                'secret' => $this->config->item('apps_facebook_secret'),
            );
            
            $this->load->library('facebook',$fb_config);
        }
        
        public function login()
        {
            $this->load->helper('url');
            $this->load_fb();
            $user = $this->facebook->getUser();
    
            if($user)
            {
                try 
                {
                    $profile_data = $this->facebook->api('/v2.1/me?fields=id');
                    $this->session->set_userdata(
                      'blablabla',intval($profile_data['id'],10)
                    );
                } 
                catch (FacebookApiException $e) 
                {
                    $user = null;
                }            
            }
            else
            {
                $this->facebook->destroySession();
            }   
            redirect(site_url('welcome/index'));
        }
        
        public function logout()
        {
            
            $this->session->unset_userdata('blablabla');
            redirect(site_url('welcome/index'));    
        }
    }
    
    ?>
  • application/controllers/welcome.php (User access /welcome/index page)
    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    class Welcome extends MY_Controller
    {    
        public function __construct()
        {
            parent::__construct();
        }
        private function load_fb()
        {
            $fb_config = array(
                'appId'  => $this->config->item('apps_facebook_id'),
                'secret' => $this->config->item('apps_facebook_secret'),
            );
            
            $this->load->library('facebook',$fb_config);        
        }
        
        public function index()
        {   
            $this->load->helper('url');
            $fb_id = intval($this->session->userdata('blablabla'),10);
            $page_data = array();
            if(!empty($fb_id) && ($fb_id>0) )
            {
                $page_data['facebook_data']['logged_in'] = true;
                $page_data['facebook_data']['logout_url'] = 
                               site_url('user_auth/logout.php');
            }
            else
            {
                $page_data['facebook_data']['logged_in'] = false;
                $this->load_fb();
                $page_data['facebook_data']['login_url'] = 
                  $this->facebook->getLoginUrl(array(
                    'display' => 'popup',
                    'redirect_uri' => site_url('user_auth/login.php'), 
                    'scope' => array("email,public_profile,user_friends")
                ));
                
            }
            
            $this->load->view('welcome_view', $page_data);
        }
        
    }
    
    ?>

View Code

  • application/views/welcome_view.php (Put login/logout button  here)
    <html>
    <head>
      <title>Hello</title>
    </head>
    <body>
    <div id="fb-root"></div>
    <script>
        window.fbAsyncInit = function () {
          FB.init({
            appId: '<?php echo $facebook_data['apps_id'] ?>',
            version : 'v2.1',
            status: true,
            cookie: true,
            xfbml: true
          });          
        };
    
        (function (doc) {
          var js;
          var id = 'facebook-jssdk';
          var ref = doc.getElementsByTagName('script')[0];
          if (doc.getElementById(id)) {
            return;
          }
          js = doc.createElement('script');
          js.id = id;
          js.async = true;
          js.src = "//connect.facebook.com/en_US/sdk.js";
          ref.parentNode.insertBefore(js, ref);
        }(document));
        
        function Login() {
          FB.login(function (response) {
            if (response.authResponse) {
              location.replace(<?php echo site_url("user_auth/login.php");?>);
            } else {
              alert("Login attempt failed!");
            }
          }, { scope: 'email,public_profile,user_friends' });
        }
    </script>
    <div id="top_menu">
        <?php if(isset($facebook_data['logged_in']) && 
                 ($facebook_data['logged_in'] != false)  ) : ?>
            <div id="logout">
              <a href="<?php echo $facebook_data['logout_url'];?>" >Logout</a>
            </div>
        <?php else : ?>
            <div id="login">
              <a onclick="Login();" href="javascript:void(0);" >Login</a>
            </div>
        <?php endif; ?>
    </div>
    </body>
    </html>
Advertisements

Simple NGinX Config

January 7, 2015 Leave a comment

Simple configuration to host static file like images and act as proxy to pass php resquest to apache httpd.

NGinX Configuration:

#
# The default server
#
server {
    listen       80 default_server;
    server_name  _;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root   /var/www/html/some_site/images_folder;
        index  index.html index.htm;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /usr/share/nginx/html;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on http://some.site.com:8080
    #
    location ~ \.php$ {
        proxy_pass   http://some.site.com:8080;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}
Categories: Linux

Simple Callback

January 7, 2015 Leave a comment

Callback is a function that is executed when some other function is done with its work.

Example Code:

using UnityEngine;
using System.Collections;

public class SimpleCallback : MonoBehaviour 
{
    delegate void delegateCaller();

    void DoACall()
    {
        Debug.Log("Do A Call");
    }

    void DoAnotherCall()
    {
        Debug.Log("Do Another Call");
    }

    IEnumerator StartATask(delegateCaller callThis)
    {
        Debug.Log("Starting...");
        yield return new WaitForSeconds(1);
        Debug.Log("Done.");
        callThis();
    }

    // Use this for initialization
    void Start () 
    {
        StartCoroutine(StartATask(DoACall));
        StartCoroutine(StartATask(DoAnotherCall));
    }
    

}

Output

Starting...
Starting...
Done.
Do A Call
Done.
Do Another Call
Categories: C#, Programming, Unity

Unlock i4s SoftBank carrier IOS 8.1.2 & fix ussd services

January 5, 2015 Leave a comment

Here the step by step to unlock my iPhone 4S 32G SoftBank carrier IOS 8.1.2 and fix ussd services (ex: to check current balance with command *111# or Internet quota *123#)

  1. Purchase R-sim 9 Pro
  2. Check whether it worked on current iOS version (in my case it worked with ios 5.1.1)
  3. Download & Install the latest iTunes version
  4. Backup iphone data with iTunes
  5. Update current ios version to ios 8.1.2 with iTunes  (need to RESTORE & update if device has been jailbreak before)
  6. Just cancel if there is “carrier settings update” popup
  7. Download & jailbreak with TaiG v1.2.0 (check cydia & uncheck 3K Assistant options)
  8. Reboot
  9. Run cydia and add following repo
  10. Search and Install “CommCenter patch for iOS 7” & “iFile”
  11. Run iFile and go to folder /System/Library/Carrier Bundles/iPhone/Default.bundle/
  12. Select on carrier.plst and select “Property List Viewer”
  13. Scroll down and find the item “SupportsSupplementaryServicesOver3GPP” And turn it “On”
  14. Reboot
  15. Test
Categories: Iphone