我想知道是否可以使用永不过期的访问令牌发布到我的页面
现在我获得了访问令牌:
https://graph.facebook.com/me/accounts
我有publish_stream
和manage_pages
权限,但使用Access Token Debugger我看到令牌在约1小时后到期。有没有办法永不过期?
答案 0 :(得分:17)
通过使用长期存在的用户访问令牌,查询[用户 ID] / accounts endpoint现在将提供页面访问权限令牌 对于用户管理的页面,过期。
因此,您必须通过服务器端呼叫将长期的短期令牌换成长期令牌:
https://graph.facebook.com/oauth/access_token?
client_id=APP_ID& client_secret=APP_SECRET& grant_type=fb_exchange_token& fb_exchange_token=EXISTING_ACCESS_TOKEN
然后使用该长期令牌查询我/帐户。绝对适用于我们,即调试器显示:'过期:从不'
编辑 - 我们的流程
所以,我们所做的是:
首先client side authentication使用我们的应用,我们得到一个"代码"在用户接受所请求的权限并将其帐户与我们的应用程序连接后返回
https://www.facebook.com/dialog/oauth? client_id = YOUR_APP_ID& redirect_uri = YOUR_REDIRECT_URI& scope = COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES& response_type = code
现在,在我们的服务器应用程序中,我们使用server side authentication来交换访问令牌的代码:
https://graph.facebook.com/oauth/access_token? client_id = YOUR_APP_ID& redirect_uri = YOUR_REDIRECT_URI& client_secret = YOUR_APP_SECRET& code = CODE_GENERATED_BY_FACEBOOK
通过此access_token,我们按照上述
现在我们要求我/帐户,结果access_token始终有效
希望有所帮助
答案 1 :(得分:4)
我简化了Pete的回答,并添加了获取非过期页面访问令牌的步骤:
访问以下网址,并在浏览器的地址栏中记下返回的访问令牌:
访问以下网址,并在返回的数据中找到所需网页的名称并记下访问令牌:
https://graph.facebook.com/me/accounts?access_token=ACCESS_TOKEN_RETURNED_FROM_STEP_1
访问以下网址并记下返回的访问令牌:
使用Access Token Debugger确保您的访问令牌的个人资料ID与所需网页的ID匹配,且永不过期
答案 2 :(得分:2)
截至2016年,有一种更简单的方法:
从右上角的下拉列表中选择您的应用 侧
点击应用程序下拉列表下方的“获取访问令牌”按钮 在右侧
在下拉列表中选择您要获取访问令牌的页面。 如果您没有看到列出的页面,那么您需要确认 您已设置页面的管理员角色。你可能也必须这样做 点击下拉列表中的“获取页面访问令牌”,然后点击您的 下次单击“获取访问权限”时,页面将显示在下拉列表中 令牌“按钮。
点击“访问令牌”输入字段中的蓝色感叹号图标
单击“打开访问令牌工具”按钮 弹出窗口的右下角
点击“扩展访问令牌”按钮以获取从不的令牌 到期
本文的原始信息:https://www.rocketmarketinginc.com/blog/get-never-expiring-facebook-page-access-token/
答案 3 :(得分:1)
好的,所以花了一周时间研究,但这是我的解决方案。 在https://developers.facebook.com/tools/explorer/中确保您将manage_page作为access_token的一部分。之后,将此代码与您的应用ID,密码和重定向一起使用:
<?php
app_id = "APP_ID";
$app_secret = "APP_SECERET";
$post_login_url = "REDIRECT_URL";
$code = $_REQUEST['code'];
//Obtain the access_token with publish_stream permission
if(empty($code)){
$dialog_url= "http://www.facebook.com/dialog/oauth?"
. "client_id=" . $app_id
. "&redirect_uri=" . urlencode( $post_login_url)
. "&COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES";
echo("<script>top.location.href='" . $dialog_url
. "'</script>");
}
else {
$token_url="https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id
. "&redirect_uri=". urlencode($post_login_url)
. "&client_secret=" . $app_secret
. "&code=" . $code;
$response = file_get_contents($token_url);
$params = null;
parse_str($response, $params);
$access_token = $params['access_token'];
echo 'access token: ' . $access_token.'<br>';
if($access_token){
$token_url="https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id
. "&redirect_uri=". urlencode($post_login_url)
. "&client_secret=" . $app_secret
.'&grant_type=fb_exchange_token'
. "&fb_exchange_token=" . $access_token;
$response = file_get_contents($token_url);
$access_token = $params['access_token'];
echo 'new access token: '.$access_token;
}
}*/
?>
之后复制“新访问令牌”并返回https://developers.facebook.com/tools/explorer/当您通过新访问令牌到达访问令牌字段时。 然后点击提交。在节点中,您将看到+ _ ___ 点击此处,然后向下滚动到帐户并点击该帐户。找到您需要访问令牌的页面,然后将其复制并粘贴到访问密钥字段中。单击调试,您将看到它永远不会过期。保存该令牌,只要您不重置您的应用秘密,它就会保持有效。
答案 4 :(得分:0)
你可以使用facebook下面的api将令牌生命刷新到60天,当令牌即将到期时,再用60天的时间再次调用相同的api,将其生命从那个时间点恢复到60天 令牌过期出现在expires参数中,其值以秒为单位
将CLIENT_ID和CLIENT_SECRET替换为其实际值
https://graph.facebook.com/oauth/access_token?client_id=&安培; client_secret =安培; grant_type = fb_exchange_token&安培; fb_exchange_token =
在ACCESS_TOKEN中,输入实际的令牌值而不附加“access_token =”