Facebook APP访问令牌是否过期?这些令牌与USER令牌不同;他们是这样获得的:
https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={0}&client_secret={1})
如http://developers.facebook.com/docs/authentication/文档的App Login部分所述。
在任何情况下他们都会失效吗?
注意:这不是关于USER访问令牌的问题(已明确记录)。有一个相同的问题http://facebook.stackoverflow.com/questions/7322063/does-app-login-access-token-expire被错误地关闭,作为另一个关于USER访问令牌的问题的重复。
答案 0 :(得分:30)
应用程序访问令牌使用您的应用程序密钥进行签名,但不会 到期;如果您重新键入/重置您的应用程序,它将失效 秘密。
答案 1 :(得分:5)
创建APP_ACCESS_TOKEN非常简单。
您可以使用App ID/API Key
和App secret
access_token = YOUR_APP_ID|YOUR_APP_SECRET
示例:1234587968 | bghyuifjk3438483249235903502035023504305
答案 2 :(得分:4)
我知道如果您使用Facebook开发人员工具重置应用程序密钥,会导致它们无效的一个条件。
我不知道使用OAuth方法生成App令牌会导致它过期。但是,如果您扫描Facebook的PHP SDK,您可能会注意到一个非过期的应用程序令牌是通过连接app_id和secret来创建的:
/**
* Returns the access token that should be used for logged out
* users when no authorization code is available.
*
* @return string The application access token, useful for gathering
* public information about users and applications.
*/
protected function getApplicationAccessToken() {
return $this->appId.'|'.$this->apiSecret;
}
警告:我绝不会在客户端代码中使用它,因为它会发布您的应用密码。但是,在信任服务器环境中,它似乎是要走的路。
为了测试这个,我去了OpenGraph工具并删除了我的访问令牌并输入了代码示例中的连接值。然后我访问了我的应用程序的见解,以验证它是否可行:
<APP_ID>/insights/application_active_users
答案 3 :(得分:0)
对我来说,答案不是找到一个没有过期的令牌(因为我不相信Facebook),而是抓住即将到期的令牌并重置而不占用我的用户时间。我找到了这个,并认为你可能想看看它。
“为确保为用户提供最佳体验,您的应用需要准备好捕获上述方案的错误。以下PHP代码向您展示如何处理这些错误并检索新的访问令牌。
当您将用户重定向到auth对话框时,如果用户已经授权您的应用程序,则不会提示用户输入权限。 Facebook将返回一个有效的访问令牌,而无需任何面向用户的对话框。但是,如果用户已取消您的应用程序的授权,则用户需要重新授权您的应用程序才能获得access_token。“资源:https://developers.facebook.com/blog/post/2011/05/13/how-to--handle-expired-access-tokens/