コード例 #1
0
ファイル: index.php プロジェクト: azanium/PopBloop-Web
 $me = null;
 if ($user) {
     try {
         Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;
         Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYHOST] = 2;
         // $uid = $facebook->getUser();
         $me = $facebook->api('/me');
         // die("<pre>" . print_r($me, true) . "</pre>");
         // cek apakah sudah terdaftar di popbloop. terdaftar: $me ada di Users.account (id, email => fb_id, fb_email)
         // jika belum: redirect ke halaman signup
         // jika sudah: langsung panggil fungsi user_user_login (buat baru khusus utk user FB)
         require_once 'modules/001_user_management/user.php';
         $fb_pb_connected = user_user_fb_pb_connected($me[id]);
         if ($fb_pb_connected) {
             // langsung login...
             $logged = user_user_loginfb($me[id]);
             // ternyata $me tidak selalu punya email. solusi: pake $me[id]	?
         } else {
             header('Location: ' . $basepath . 'fb.signup.php');
             exit;
         }
     } catch (FacebookApiException $e) {
         error_log($e);
         $me = null;
     }
 }
 $params = array('next' => $basepath);
 $logoutUrl = $facebook->getLogoutUrl($params);
 $loginUrl = $facebook->getLoginUrl();
 $_SESSION['fb_loginUrl'] = $loginUrl;
 $_SESSION['fb_logoutUrl'] = $logoutUrl;
コード例 #2
0
ファイル: FacebookPB.php プロジェクト: azanium/PopBloop-Web
function fb_check()
{
    // check fb start
    /*
    	signed_request: 
    	Array
    	(
    			[algorithm] => HMAC-SHA256
    			[expires] => 1344492000
    			[issued_at] => 1344485848
    			[oauth_token] => AAAFBxR81IbUBACMTXSZBtudFAmNoffCxNi3fVpPIZBLolSSxvX3dGObQSVObnYx8l1fjWglPfr6ZAQfHNpaVslNioGJ3W4bObMZBww7LZCdXCGkZBS72wr
    			[user] => Array
    					(
    							[country] => id
    							[locale] => en_US
    							[age] => Array
    									(
    											[min] => 21
    									)
    				)
    		[user_id] => 100004158610028
    	)
    jika user belum authorize app ini, maka variable $user_id dan $oauth_token tidak ada
    */
    $config = array();
    $config['appId'] = '353789864649141';
    $config['secret'] = '9e066419bed7d9ff07f4475f26318aa8';
    $config['fileUpload'] = false;
    // optional
    $facebook = new Facebook($config);
    $signed_request = $facebook->getSignedRequest();
    // die("<pre>" . print_r($signed_request, true) . "</pre>");
    write_log(array('log_text' => time() . ": signed_request: " . print_r($signed_request, true)));
    if (isset($signed_request)) {
        // print("<pre>" . print_r($signed_request, true) . "</pre>");exit;
        // cek jika $signed_request ini utk registrasi
        if (isset($signed_request['registration'])) {
            // print("<pre>" . print_r($signed_request['registration'], true) . "</pre>");exit;
            // masukkan ke db
            $me = $facebook->api('/me');
            require_once 'modules/001_user_management/guest.php';
            // fullname, username, password, email, avatarname, handphone, twitter, sex, birthday, location
            $reg_data = array('fullname' => $signed_request['registration']['name'], 'username' => $signed_request['registration']['email'], 'password' => $me['id'], 'email' => $signed_request['registration']['email'], 'avatarname' => $signed_request['registration']['name'] . time(), 'handphone' => $signed_request['registration']['handphone'], 'twitter' => $signed_request['registration']['twitter'], 'sex' => $signed_request['registration']['gender'], 'birthday' => $signed_request['registration']['birthday'], 'location' => $signed_request['registration']['location']['name'], 'via_fb' => 1, 'fb_id' => $me['id'], '$automate_login' => 1);
            $registered = user_guest_add_user($reg_data);
            // die("Registered: $registered");
            if ($registered == 'OK') {
                user_user_loginfb($me[id]);
                unset($_SESSION['signed_request']);
                unset($signed_request);
                header("Location: " . $basepath);
                exit;
            } else {
                if ($registered == 'ERROR - Email already used. Use another email.') {
                    user_user_loginfb($me[id]);
                    unset($_SESSION['signed_request']);
                    unset($signed_request);
                    //$html = "<script>
                    //	alert('".$registered."');
                    //	window.top.location = '".$basepath."';
                    //</script>";
                    //print($html); exit;
                    header("Location: " . $basepath);
                    exit;
                }
            }
        }
        write_log(array('log_text' => time() . ": 146 - signed_request: " . print_r($signed_request, true)));
        if (isset($signed_request['oauth_token'])) {
            $_SESSION['signed_request'] = $signed_request;
        }
        $app_authorized = isset($signed_request['user_id']) && isset($signed_request['oauth_token']);
        write_log(array('log_text' => time() . ": app_authorized: " . print_r($app_authorized, true)));
        if (!isset($signed_request['user_id']) && !isset($signed_request['oauth_token']) && !isset($_SESSION['fb_id'])) {
            // Redirect the user to the OAuth Dialog
            // die("YOu are here...");
            $html = "<script>\r\n\t\t\t\tvar oauth_url = 'https://www.facebook.com/dialog/oauth/';\r\n\t\t\t\toauth_url += '?client_id=' + " . $config['appId'] . ";\r\n\t\t\t\toauth_url += '&redirect_uri=' + encodeURIComponent('https://apps.facebook.com/popbloop/');\r\n\t\t\t\toauth_url += '&scope=email,user_birthday,status_update,publish_stream,read_friendlists';\t// user_photos,user_videos,\r\n\t\t\t\t// document.write(oauth_url);\r\n\t\t\t\twindow.top.location = oauth_url;\r\n\t\t\t\t\r\n\t\t\t</script>";
            print $html;
            exit;
        }
        /*unset($_SESSION['just_logout']);*/
    }
    // operasi2 yg dilakukan bila user akses via FB
    // BELUM SELESAI
    if (isset($_SESSION['signed_request'])) {
        write_log(array('log_text' => time() . ": akses via FB: " . print_r($_SESSION['signed_request'], true)));
        $session = $facebook->getUser();
        $me = null;
        if ($session) {
            try {
                $me = $facebook->api('/me');
            } catch (Exception $e) {
            }
        }
        // die("<pre>" . print_r($me, true) . "</pre>");
        // cek apakah user ini sudah terdaftar sbg player popbloop
        // jika belum, redirect ke facebook registration plugin
    }
    // operasi2 yg dilakukan bila user akses via WEB
    // belum selesai
    if (!isset($_SESSION['signed_request'])) {
        write_log(array('log_text' => time() . ": akses via WEB: " . print_r($_SESSION['signed_request'], true)));
        $user = $facebook->getUser();
        // die("user: <pre>" . print_r($user, true) . "</pre>");
        $me = null;
        if ($user) {
            try {
                $uid = $facebook->getUser();
                $me = $facebook->api('/me');
                // die("<pre>" . print_r($me, true) . "</pre>");
                // cek apakah sudah terdaftar di popbloop. terdaftar: $me ada di Users.account (id, email => fb_id, fb_email)
                // jika belum: redirect ke halaman signup
                // jika sudah: langsung panggil fungsi user_user_login (buat baru khusus utk user FB)
                require_once 'modules/001_user_management/user.php';
                $fb_pb_connected = user_user_fb_pb_connected($me[id]);
                if ($fb_pb_connected) {
                    // langsung login...
                    // SAMPE SENEE...
                    $logged = user_user_loginfb($me[id]);
                    // ternyata $me tidak selalu punya email. solusi: pake $me[id]	?
                    write_log(array('log_text' => time() . ": FB PB Connected: " . print_r($logged, true)));
                    // die("logged: $logged");
                } else {
                    write_log(array('log_text' => time() . ": FB PB NOT Connected: " . print_r($fb_pb_connected, true)));
                    header('Location: ' . $basepath . 'fb.signup.php');
                    exit;
                }
            } catch (FacebookApiException $e) {
                error_log($e);
                $me = null;
            }
        }
        $params = array('next' => $basepath);
        $logoutUrl = $facebook->getLogoutUrl($params);
        $loginUrl = $facebook->getLoginUrl();
        // die("logout: $logoutUrl, login: $loginUrl");
        //		$_SESSION['fb_me'] = $me;
        $_SESSION['fb_loginUrl'] = $loginUrl;
        $_SESSION['fb_logoutUrl'] = $logoutUrl;
    }
    // check fb end
}