Vla*_*sec 184 facebook facebook-graph-api facebook-access-token
我正在开发一个将facebook页面作为其数据源之一的项目.它定期从中导入一些数据,不涉及GUI.然后我们使用Web应用程序显示我们已有的数据.
并非所有信息都是公开的.这意味着我必须访问一次数据然后保留它.但是,我不知道这个过程,我还没有找到一个很好的教程.我想我需要一个access_token,如何从用户那里逐步获得它?用户是Facebook页面的管理员,他是否必须在页面中添加一些我们的FB应用程序?
编辑:谢谢@phwd的提示.我做了一个教程,如何获得永久页面访问令牌,即使offline_access不再存在.
编辑:我刚刚发现它的回答:持久的FB访问令牌服务器拉FB页面信息
don*_*nut 621
按照Facebook 扩展页面令牌文档中的说明,我能够获得一个不会过期的页面访问令牌.
我建议使用Graph API Explorer进行所有这些步骤,除非另有说明.
如果您已有应用,请跳至步骤1.
您无需更改其权限或任何内容.您只需要一个在完成访问令牌之前不会消失的应用程序.
"访问令牌"字段中显示的令牌是您的短期访问令牌.
按照Facebook文档中的这些说明,向GET请求
https://graph.facebook.com/v2.10/oauth/access_token?grant_type=fb_exchange_token&client_id= {app_id}&client_secret = {app_secret}&fb_exchange_token = {short_lived_token}
输入您的应用程序的ID和密码以及上一步中生成的短期令牌.
您无法使用Graph API Explorer.由于某种原因,它会受到这个请求的困扰.我认为这是因为响应不是JSON,而是查询字符串.由于这是一个GET请求,您只需转到浏览器中的URL即可.
响应应如下所示:
{"access_token":" ABC123 ","token_type":"bearer","expires_in":5183791}
"ABC123"将是您的长期访问令牌.您可以将其放入Access Token Debugger进行验证.在"过期"下,它应该具有类似"2个月"的东西.
使用长期访问令牌,发出GET请求
https://graph.facebook.com/v2.10/me?access_token= {long_lived_access_token}
该id字段是您的帐户ID.你需要它用于下一步.
发出GET请求
https://graph.facebook.com/v2.10/ {account_id}/accounts?access_token = {long_lived_access_token}
JSON响应应该有一个data字段,在该字段下是用户可以访问的项目数组.找到您想要永久访问令牌的页面的项目.该access_token字段应具有永久访问令牌.复制它并在Access Token Debugger中测试它.在"过期"下,它应该说"从不".
Rob*_*Rob 82
这是我的解决方案,仅使用Graph API Explorer和Access Token Debugger:
(经API API 2.9-2.11,3.0-3.1测试)
小智 11
除了Vlasec答案中的建议步骤,您还可以使用:
/{pageId}?fields=access_token&access_token=THE_ACCESS_TOKEN_PROVIDED_BY_GRAPH_EXPLORERdw1*_*dw1 10
我制作了一个PHP脚本,使其更容易.创建一个应用程序.在Graph API Explorer中,选择您的App并获取具有manage_pages和publish_pages权限的用户令牌.在"关于"页面底部找到您的页面ID.填写配置变量并运行脚本.
<?php
$args=[
'usertoken'=>'',
'appid'=>'',
'appsecret'=>'',
'pageid'=>''
];
echo generate_token($args);
function generate_token($args){
$r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
$longtoken=$r->access_token;
$r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/me?access_token={$longtoken}")); // get user id
$userid=$r->id;
$r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/{$userid}/accounts?access_token={$longtoken}")); // get permanent token
foreach($r->data as $d) if($d->id==$args['pageid']) return $d->access_token;
}
Run Code Online (Sandbox Code Playgroud)
Sid*_*mal 10
另一个PHP答案让生活更轻松.更新了Facebook Graph API 2.9.只需填写并加载即可.
<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
'usertoken'=>'',
'appid'=>'',
'appsecret'=>'',
'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
$r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
$longtoken=$r->access_token;
$r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/me?access_token={$longtoken}")); // get user id
$userid=$r->id;
$r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$userid}?fields=access_token&access_token={$longtoken}")); // get permanent token
if($r->id==$args['pageid']) $finaltoken=$r->access_token;
return $finaltoken;
}
?>
Run Code Online (Sandbox Code Playgroud)
从图2.9开始,在调试短访问令牌之后,只需单击Access Token Debugger工具底部的Extend Access Token,就可以省去获取长访问令牌的麻烦.有关和的信息,运行下面的PHP获取永久访问令牌.pageidlonglivedtoken
<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
'longlivedtoken'=>'',
'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
$r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$args['pageid']}?fields=access_token&access_token={$args['longlivedtoken']}"));
return $r->access_token;
}
?>
Run Code Online (Sandbox Code Playgroud)
虽然第二个代码为您省去了很多麻烦,但我建议您运行第一个PHP代码,除非您非常着急,因为它会交叉检查pageid和userid.如果您错误地选择了用户令牌,第二个代码将不会结束.
上面的大多数答案现在都没有给出永久令牌,他们只将其延长到 2 个月。我是这样得到的:
我尝试了以下步骤:https: //developers.facebook.com/docs/marketing-api/access#graph-api-explorer
获取永久页面访问令牌
一个提示,当页面语言是英语时,它只适用于我.
小智 6
由于所有早期的答案都是旧的,并且由于 facebook 的政策不断变化,其他提到的答案可能不适用于永久令牌。
经过大量调试后,我能够使用以下步骤获取永不过期的令牌:
图形 API 资源管理器:
就是这样
| 归档时间: |
|
| 查看次数: |
165974 次 |
| 最近记录: |