0

我正在使用 Graph api 使用 PHP 创建一个 facebook 应用程序。

require_once("facebook.php");
  $config = array();
  $config[‘appId’] = 'xxxxxxxxxxx';
  $config[‘secret’] = 'xxxxxxxxxxxxxxxxxxxxx'; // NEVER USED THIS , JUST INCLUDED IT !
  $config[‘fileUpload’] = true; // optional
  $facebook = new Facebook($config);


$app_id = "xxxxxxxxx";
    $app_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    $my_url = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

 $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']; // The acess call :)

       $at = $params['access_token']; // I USE THIS ACCESS TOKEN

我现在使用该访问令牌 ($at) 来发出请求。但我需要将 access_token 存储更长时间(60 天)。

所以 1) 我如何使用 setExtendedAccessToken() 方法 & 2) 我应该把它放在我的代码中 & 3) 我在哪里可以获得输出

我也包括 PHP SDK,即使我没有使用它。

4

3 回答 3

1

您可以将临时令牌交换为扩展令牌。检查下面的代码。

try {
        $graph_url   =  "https://graph.facebook.com/oauth/access_token?";
        $graph_url  .=  "client_id=".$FB_APP_ID;
        $graph_url  .=  "&client_secret=".$FB_APP_SECRET;
        $graph_url  .=  "&grant_type=fb_exchange_token";
        $graph_url  .=  "&fb_exchange_token=".$fb_temp_access_token;

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

        $new_token  =$params['access_token'];

    } catch (Exception $e) {
       //DO NOTHING
    }  
于 2012-12-12T06:19:39.073 回答
0

你可以扩展一个access_token,在这里阅读它:https ://developers.facebook.com/docs/howtos/login/extending-tokens/

把它放在最后,在你已经从登录中获得了一个 acces_token 之后。

您以与其他 API 调用相同的方式获得输出。

于 2012-12-12T05:54:40.810 回答
0

我用来获取访问令牌的代码是:

$access_token=$facebook->getAccessToken();

我只是把这段代码像这样。

if($userid){

       try{

         $access_token = $facebook->getAccessToken();
         echo $access_token;
    }
    catch(FacebookApiException $e){
       //catch error here
}
else{

$loginUrl=$facebook->getLoginUrl(array('redirect_uri'=>'your_url','scope'=>'publish_stream,read_stream,manage_pages');
exit("<script>window.top.location.replace('$loginUrl');</script>");
}

它确实存储了大约 2 个月到期的访问令牌(我使用这个工具来检查)。

于 2012-12-15T13:00:50.087 回答