如何使用setExtendedAccessToken()

时间:2012-12-12 05:17:45

标签: php facebook facebook-graph-api

我使用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,即使我没有使用它。

3 个答案:

答案 0 :(得分: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
    }  

答案 1 :(得分:0)

您可以扩展access_token,在此处阅读:https://developers.facebook.com/docs/howtos/login/extending-tokens/

在您从登录中获得acces_token之后,将其放在最后。

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

答案 2 :(得分: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个月后过期的访问令牌(我使用this tool进行检查)。