如何获取未过期的页面访问令牌?

Mar*_*one 11 facebook-graph-api facebook-access-token

我想知道是否有可能有一个永不过期的访问令牌发布到我的页面

现在我获得了访问令牌:

https://graph.facebook.com/me/accounts
Run Code Online (Sandbox Code Playgroud)

publish_streammanage_pages权限,但使用的访问令牌调试我看到令牌在约1小时后到期.有没有办法永不过期?

Pet*_*ete 17

facebook开发者:

通过使用长期存在的用户访问令牌,查询[用户ID] /帐户端点现在将提供对于用户管理的页面不会过期的页面访问令牌.

因此,您必须使用服务器端调用来交换您的初始短期令牌以获取长期令牌:

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 
Run Code Online (Sandbox Code Playgroud)

然后使用该长期令牌查询我/帐户.绝对适合我们,即调试器显示:'Expires:Never'


编辑 - 我们的过程

所以,我们做的是:

  • 我们的应用程序首先进行客户端身份验证,在用户接受所请求的权限并将其帐户与我们的应用程序连接后,我们会收到"代码"

    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

  • 现在在我们的服务器应用程序中,我们使用服务器端身份验证来交换访问令牌

    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始终有效

希望有所帮助

  • @Pete:你确定调试器显示"Expires:Never",因为对我来说它显示了`Expires:1354445684(大约2个月) (2认同)
  • 我很抱歉,离开..我将使用我们使用的身份验证过程编辑我的答案..但对我们来说,EXISTING_ACCESS_TOKEN是您需要请求帐户的用户访问令牌.从理论上讲,您应该也可以使用页面访问令牌进行交换. (2认同)