2012-03-28 16 views
0

Ich mache derzeit eine Facebook-App und habe einige Probleme mit Berechtigungen. Ich benötige Erlaubnis von jedem Benutzer, dort Standort und dort Freunde Standorte zu verwenden. Der Code, den ich habe, hat in der Vergangenheit funktioniert, scheint aber in letzter Zeit nicht mehr zu funktionieren. Angenommen, meine app_id und app_namespace sind deklariert. Alles was passiert, ist, dass ich im if (leerer ($ code)) Block zur dialog_url weitergeleitet werde, aber nach meinem Wissen sollte $ code nicht leer sein. Jede Hilfe würde sehr geschätzt werden. Vielen Dank.Facebook fragt nach Berechtigungen und Authentifizierung

require_once('sdk/src/facebook.php'); 
require_once('AppInfo.php'); 
require_once('utils.php'); 
require_once('connection.php'); 

$facebook = new Facebook(array(
'appId' => AppInfo::appID(), 
'secret' => AppInfo::appSecret(), 
)); 

$user_id = $facebook->getUser(); 
     if(user has ran the app before) 
    { 


     mysql_close($connection); 

     session_start(); 

     $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection 
     $dialog_url = "http://www.facebook.com/dialog/oauth?client_id" 
     . $app_id . "&redirect_uri=" . urlencode($my_url2) . "&state=" 
     . $_SESSION['state']; 

     echo("<script> top.location.href='" . $dialog_url . "'</script>"); 

    } 
    else 
    { 

     mysql_close($connection); 

     session_start(); 
     $code = $_REQUEST["code"]; 

     if(empty($code)) { 
      $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection 
      $dialog_url = "http://www.facebook.com/dialog/oauth?client_id" 
      . $app_id . "&redirect_uri=" . urlencode($my_url) . "&scope= user_location, friends_location, offline_access" . "&state=" 
      . $_SESSION['state']; 

      echo("<script> top.location.href='" . $dialog_url . "'</script>"); 
     } 

     if($_REQUEST['state'] == $_SESSION['state']) { 
      $token_url = "https://graph.facebook.com/oauth/access_token?" 
      . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) 
      . "&client_secret=" . $app_secret . "&code=" . $code; 

      $response = @file_get_contents($token_url); 
      $params = null; 
      parse_str($response, $params); 

      $graph_url = "https://graph.facebook.com/me?access_token" 
      . $params['access_token']; 

      $user = json_decode(file_get_contents($graph_url)); 
      echo("Hello " . $user->name); 
     } 
     else 
     { 
      echo("The state does not match. You may be a victim of CSRF."); 
     } 
    } 

Antwort

0

scheint zu einfach, aber Sie haben Räume in Ihrem oauth URL, die Sie $ dialog_url zugewiesen haben?

Verwandte Themen