php - Facebook connect not redirecting properly all of sudden -


did facebook randomly change api on last couple of days? had site working facebook api , of sudden doesn't work @ all. no, haven't changed anything, literally decided yesterday not redirect anymore...it seems try connect few times , displays page:

"the page isn't redirecting firefox has detected server redirecting request address in way never complete. * problem can caused disabling or refusing accept cookies."

anyway, here code wrap heads around :p (yes, have real app id's , such in place) fblogin_member.php file you're directed after clicking on login link:

$app_id = "my id #"; $app_secret = "my secret id"; $my_url = "http://www.sitedomain.com/confirmlogin_fb_member.php";  if (empty($code)) {     $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=". $app_id ."&redirect_uri=". urlencode($my_url) ."&scope=email";     echo "<script> top.location.href='". $dialog_url ."'</script>"; }  $code = $_request['code']; 

here confirmlogin_fb_member.php file:

//if user denies access website, take him manual login page     // if ($_get['error']) {     // header("location: memberlogin.php");     // exit; // }  require_once('config/dbconfig.php');  $app_id = "my id #"; $app_secret = "my secret id"; $my_url = "http://www.sitedomain.com/confirmlogin_fb_member.php";   $code = $_get['code'];  $token_url = "https://graph.facebook.com/oauth/access_token?client_id="     . $app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret="     . $app_secret . "&code=" . $code;   // request access token //use curl , not file_get_contents() $ch = curl_init(); curl_setopt($ch, curlopt_header, 0); curl_setopt($ch, curlopt_url, $token_url); curl_setopt($ch, curlopt_returntransfer, 1); curl_setopt($ch, curlopt_timeout, 30); curl_setopt($ch, curlopt_ssl_verifypeer, false); $access_token = curl_exec($ch); curl_close($ch);  $graph_url = "https://graph.facebook.com/me?" . $access_token;  // request user data using access token $ch = curl_init(); curl_setopt($ch, curlopt_header, 0); curl_setopt($ch, curlopt_url, $graph_url); curl_setopt($ch, curlopt_returntransfer, 1); curl_setopt($ch, curlopt_timeout, 30); curl_setopt($ch, curlopt_ssl_verifypeer, false); $temp_user = curl_exec($ch); curl_close($ch);  //decode json array user data $user = json_decode($temp_user);  //store user data $u = $user->name; $e = $user->email; $fb_id = $user->id; $username = $user->username; $picture = 'https://graph.facebook.com/'. $fb_id .'/picture';  //check if user has signed before $insert = true; $result = mysql_query("select * members") or die(mysql_error());  while ($row = mysql_fetch_array($result)) {     //if username exists, not insert     if (($row['name'] == $u) && ($row['usertype'] == "facebook_user")) {         $insert = false;     } }  // random password generator $chars = "abcdefghijkmnopqrstuvwxyz023456789"; srand((double)microtime()*1000000); $i = 0; $pass = '' ;  while ($i <= 7) {     $num = rand() % 33;     $tmp = substr($chars, $num, 1);     $pass = $pass . $tmp;     $i++; } // end generator  // if new user, insert user details in mysql table if ($insert) {     mysql_query("insert members(name, fb_username, password, email, profile_pic, usertype) values('$u', '$username', '$pass' , '$e', '$picture', 'facebook_user')") or die(mysql_error());  }  //login user if (!session_start()) session_start(); $_session['in'] = true; $_session['username'] = $u; $_session['usertype'] = "facebook_user"; $_session['useremail'] = $e;  //take user his/her homepage header("location: layout.php"); 

lastly, here top of layout.php facebook api session called:

session_start(); require_once('config/dbconfig.php'); require_once('facebook/facebook.php');  if (isset($_request['logout'])) {     unset($_session['in']);     unset($_session['username']);     unset($_session['usertype']);     unset($_session['useremail']);     session_destroy();     header("location: layout.php"); }  $session = $_session['in']; if (!$session) {     $login = '<a href="fblogin_member.php" class="fblogin">login facebook</a>';      $tooltipmsg = '<p>you must <strong>log in</strong> vote.</p>'; } else {     $sessionuser = $_session['username'];     $result = mysql_query("select * `members` name = '$sessionuser'") or die('query failed: ' . mysql_error() . "<br />\n$sql");      if ($result) {         $sessionrow = mysql_fetch_array($result);         $sessionuserid = $sessionrow['memberid'];     }      if ($sessionrow['usertype'] == "facebook_user") {         $facebook = new facebook(array(                                     'appid'  => 'my app id #',                                     'secret' => 'my secret id',                                     'cookie' => true                                 ));          // $session = $facebook->getsession();         $user = $facebook->getuser();          $me = null;         // session based api call.         if ($user) {             try {                 $me = $facebook->api('/me');             } catch (facebookapiexception $e) {                 // error_log($e);             }         }     } 

it boggles mind has worked fine couple weeks, , when come home being gone day , half doesn't work. appreciated, if there other things wrong see coding (this first attempt facebook api) :)

it sounds might have infinite redirect problem?

you checking see if $code set before assigning it, try flipping order of these 2 statements:

$code = $_request['code'];

if (empty($code)) { $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=". $app_id ."&redirect_uri=". urlencode($my_url) ."&scope=email"; echo " top.location.href='". $dialog_url ."'"; }


Comments

Popular posts from this blog

c++ - Is it possible to compile a VST on linux? -

java - Output of Eclipse is rubbish -

jquery - Confused with JSON data and normal data in Django ajax request -