facebook - Get User-ID not working sometimes? -
i having issue app made recently. voting app supposed allow voting once per day every user. taking user id , placing every user-id in database, userid = 0 , have no idea why that. getting browser info aswell wanted check might browser related happened on both mozilla , ie.
here code below if helps.
index.php (code use nonfans)
<?php header('p3p:cp="idc dsp cor adm devi taii psa psd ivai ivdi coni our ind cnt"');?> <?php require 'facebook.php'; $app_id = "xxx"; $app_secret = "xxx"; // create our application instance (replace appid , secret). $facebook = new facebook(array( 'appid' => $app_id, 'secret' => $app_secret, 'cookie' => true )); // user id $user = $facebook->getuser(); // may or may not have data based on whether user logged in. // // if have $user id here, means know user logged // facebook, don't know if access token valid. access // token invalid if user logged out of facebook. if ($user) { try { // proceed knowing have logged in user who's authenticated. $user_profile = $facebook->api('/me'); } catch (facebookapiexception $e) { error_log($e); $user = null; } } // login or logout url needed depending on current user state. if ($user) { $logouturl = $facebook->getlogouturl(); } else { $loginurl = $facebook->getloginurl(array('canvas' => 1, 'fbconnect' => 0, 'next' => 'xxx', 'cancel_url' => 'xxx' )); echo("<script> top.location.href='" . $loginurl . "'</script>"); } $signed_request = $facebook->getsignedrequest(); function parsepagesignedrequest() { if (isset($_request['signed_request'])) { $encoded_sig = null; $payload = null; list($encoded_sig, $payload) = explode('.', $_request['signed_request'], 2); $sig = base64_decode(strtr($encoded_sig, '-_', '+/')); $data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true)); return $data; } return false; } if($signed_request = parsepagesignedrequest()) { if($signed_request->page->liked) { echo("<script> location.href='revealed.php'</script>"); } else { echo "<img src=\"non-fans.jpg\" width=\"520\" height=\"483\">"; } } ?> <!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=utf-8" /> <title>untitled document</title> </head> <body style="text-align:center; margin:0; overflow:hidden;"> <div id="fb-root"></div> <script type="text/javascript"> window.fbasyncinit = function() { fb.init({appid: 'xxx', status: true, cookie: false, xfbml: true}); fb.canvas.scrollto(0,0); window.settimeout(function() { fb.canvas.setautoresize(); }, 250); }; (function() { var e = document.createelement('script'); e.async = true; e.src = document.location.protocol + '//connect.facebook.net/en_us/all.js'; document.getelementbyid('fb-root').appendchild(e); }()); </script> </body> </html>
and here code reveal tab - main app.
<?php require 'facebook.php'; $app_id = "xxx"; $app_secret = "xxx"; // create our application instance (replace appid , secret). $facebook = new facebook(array( 'appid' => $app_id, 'secret' => $app_secret, )); // user id $user = $facebook->getuser(); // may or may not have data based on whether user logged in. // // if have $user id here, means know user logged // facebook, don't know if access token valid. access // token invalid if user logged out of facebook. if ($user) { try { // proceed knowing have logged in user who's authenticated. $user_profile = $facebook->api('/me'); } catch (facebookapiexception $e) { error_log($e); $user = null; } } function getbrowser() { $u_agent = $_server['http_user_agent']; $bname = 'unknown'; $platform = 'unknown'; $version= ""; //first platform? if (preg_match('/linux/i', $u_agent)) { $platform = 'linux'; } elseif (preg_match('/macintosh|mac os x/i', $u_agent)) { $platform = 'mac'; } elseif (preg_match('/windows|win32/i', $u_agent)) { $platform = 'windows'; } // next name of useragent yes seperately , reason if(preg_match('/msie/i',$u_agent) && !preg_match('/opera/i',$u_agent)) { $bname = 'internet explorer'; $ub = "msie"; } elseif(preg_match('/firefox/i',$u_agent)) { $bname = 'mozilla firefox'; $ub = "firefox"; } elseif(preg_match('/chrome/i',$u_agent)) { $bname = 'google chrome'; $ub = "chrome"; } elseif(preg_match('/safari/i',$u_agent)) { $bname = 'apple safari'; $ub = "safari"; } elseif(preg_match('/opera/i',$u_agent)) { $bname = 'opera'; $ub = "opera"; } elseif(preg_match('/netscape/i',$u_agent)) { $bname = 'netscape'; $ub = "netscape"; } // correct version number $known = array('version', $ub, 'other'); $pattern = '#(?<browser>' . join('|', $known) . ')[/ ]+(?<version>[0-9.|a-za-z.]*)#'; if (!preg_match_all($pattern, $u_agent, $matches)) { // have no matching number continue } // see how many have $i = count($matches['browser']); if ($i != 1) { //we have 2 since not using 'other' argument yet //see if version before or after name if (strripos($u_agent,"version") < strripos($u_agent,$ub)){ $version= $matches['version'][0]; } else { $version= $matches['version'][1]; } } else { $version= $matches['version'][0]; } // check if have number if ($version==null || $version=="") {$version="?";} return array( 'useragent' => $u_agent, 'name' => $bname, 'version' => $version, 'platform' => $platform, 'pattern' => $pattern ); } // try $ua=getbrowser(); $yourbrowser= "your browser: " . $ua['name'] . " " . $ua['version'] . " on " .$ua['platform'] . " reports: <br >" . $ua['useragent']; ?> <!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=utf-8" /> <link rel="stylesheet" type="text/css" href="http://meyerweb.com/eric/tools/css/reset/reset.css" media="all" /> <link rel="stylesheet" type="text/css" href="style.css" media="all" /> <script src="jquery-1.6.4.min.js" type="text/javascript"></script> <script src="jquery.validate.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function() { $("#voting-form").validate(); }); </script> </head> <body> <div id="fb-root"></div> <script type="text/javascript"> window.fbasyncinit = function() { fb.init({appid: 'xxx', status: true, cookie: false, xfbml: true}); fb.canvas.scrollto(0,0); window.settimeout(function() { fb.canvas.setautoresize(); }, 250); }; (function() { var e = document.createelement('script'); e.async = true; e.src = document.location.protocol + '//connect.facebook.net/en_us/all.js'; document.getelementbyid('fb-root').appendchild(e); }()); </script>
let me know if need queries info doubg thats problem works in 99 out of 100 votes
for extrange reason server doesn't recognize user logged in (at least that's think since i'm having same issue), have attempt log user again proper access token. how it:
$user = $facebook->getuser(); if(!$user) { $loginurl = $facebook->getloginurl(array('scope'=>'publish_stream,email')); echo "<script type='text/javascript'>top.location.href = '$loginurl';</script>"; exit; }
and it's supposed work, can't guarantee anything. hope helps.
Comments
Post a Comment