Facebook应用(非用户)访问令牌过期

时间:2012-01-25 20:09:01

标签: facebook-graph-api access-token

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访问令牌的问题的重复。

4 个答案:

答案 0 :(得分:30)

根据Facebook documentation

  

应用程序访问令牌使用您的应用程序密钥进行签名,但不会   到期;如果您重新键入/重置您的应用程序,它将失效   秘密。

答案 1 :(得分:5)

创建APP_ACCESS_TOKEN非常简单。 您可以使用App ID/API KeyApp 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/