How do I implement a facebook PHP Login as a fallback to single sign on with FBML -
i have working single sign on facebook works (most of time) whatever reason error. i'm trying write fallback method uses php sdk login directs facebook , forwards url, once facebook redirects page can see session data in url under $_get['session'] json string, need figure out how use string make valid api calls.
<?php require_once "facebook_sdk.php"; $facebook = new facebook(array('appid' => '123','secret' => '456','cookie' => true,)); $session = null; $_fb_profile = null; $session = $facebook->getsession(); //get links login/logout $loginurl = $facebook->getloginurl(); $logouturl = $facebook->getlogouturl(); if($session){ try { $facebook_id = $facebook->getuser(); $_fb_profile = $facebook->api('/me'); //if not null valid session $facebook_name = $_fb_profile['name']; $facebook_link = $_fb_profile['link']; } catch (facebookapiexception $e) { echo $e; } } //there not valid session though single sign on fbml button, try checking php login if(!$_fb_profile){ $session = $_get['session'];//json string facebook $session = json_decode($session);//make array try { $facebook->setsession($session,true);//need set session how $_get['session'] $facebook_id = $facebook->getuser(); $_fb_profile = $facebook->api('/me'); $facebook_name = $_fb_profile['name']; $facebook_link = $_fb_profile['link']; } catch (facebookapiexception $e) { die($e); //getting invalid oauth access token } } ?> <div id="fb-root"></div> <script> window.fbasyncinit = function() { fb.init({ appid : '<?php echo $facebook->getappid(); ?>', session : <?php echo json_encode($session); ?>, // don't refetch session when php has status : true, // check login status cookie : true, // enable cookies allow server access session xfbml : true // parse xfbml }); // whenever user logs in, refresh page fb.event.subscribe('auth.login', function() { window.location.reload(); }); }; (function() { var e = document.createelement('script'); e.src = document.location.protocol + '//connect.facebook.net/en_us/all.js'; e.async = true; document.getelementbyid('fb-root').appendchild(e); }()); </script> <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> </head> <body> <?php if(!$session || !$_fb_profile){ //user not logged in show fbml button , php login link echo "<fb:login-button perms='email,user_birthday,user_education_history,read_friendlists,publish_stream'></fb:login-button> <p class='small' style='float:right;'>having trouble? try <a href='$loginurl'>logging in here</a></p>"; } else{ //user has logged in echo "you logged facebook <a href='$facebook_link'>$facebook_name</a>"; }?> </body> </html>
Comments
Post a Comment