Erste facebook user access token / PHP-SDK 3.1.1

da dieser Artikel ist nicht die Beantwortung der Frage ( Wie man user access token? ), wollte ich mal Fragen, wie man die user access token.

Ich habe bereits meine app access token, einfach. Ich sah auch in der neuesten php-sdk Base_facebook Klasse gibt es eine getUserAccesstoken Funktion, aber seine nutzlos, weil Sie am Ende nur den app access token.

Dies ist meine Authentifizierung flow:
der Benutzer bekommt in der fanpage-app, und irgendwann hat er zu autorisieren Berechtigungen:

$facebook = new Facebook(array(
    'appId' => $app_id,
    'secret' => $secret,
    'cookie' => true
));

$user = $facebook->getUser(); 

if($user == 0) {

  $login_url = $facebook->getLoginUrl($params = array('scope' => "publish_stream", 'redirect_uri' => "https://www.facebook.com/pages/PAGENAME/PAGE-ID?sk=app_APP-ID0&app_data=af"));

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

Diese funktioniert, gut, app_data "af" param festgelegt ist, um wieder die Seite innerhalb der fanpage app.

Weil ich merke, dass ich beim entfernen der app und gehen Sie zurück auf die auth-Seite, die user cookie ($user) noch gesetzt und so wird der Benutzer nicht aufgefordert werden, für die Berechtigungen wieder.

Deshalb wollte ich die Berechtigungen überprüfen, und deshalb brauche ich die user access token

    try{
        $permissions = $facebook->api("/me/permissions", 'GET', array('access_token' => "$access_token" ));
    }
    catch (Exception $e) {echo ("<script> top.location.href='".$login_url."'</script>"); }

    if( array_key_exists('publish_stream', $permissions['data'][0]) ) {
        //Permission is granted!

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

Also versuchte ich die server-side-auth-Beispiel (https://developers.facebook.com/docs/authentication/server-side/), aber das funktioniert hier nicht, da Sie nicht in der Lage zu Lesen, die $_REQUEST aus dem inneren des app, so dass ich bin gonna hier hängengeblieben. - Wie seid Ihr prüfen für Sie die Berechtigung, innerhalb einer app?

   $app_id = "YOUR_APP_ID";
   $app_secret = "YOUR_APP_SECRET";
   $my_url = "YOUR_URL";

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

   if(empty($code)) {
     $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
     $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" 
       . $app_id . "&redirect_uri=" . urlencode($my_url) . "&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.");
   }

TIA & prost,
daniel

  • Wenn Sie wissen, wie man sich einen app access token dann ein user access token ist einfach. Könnten Sie das bitte klären
  • wenn es einfach ist, können Sie uns sagen, wie es zu tun?
InformationsquelleAutor Daniel Weiß | 2012-05-08
Schreibe einen Kommentar