我使用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,即使我没有使用它。
答案 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进行检查)。