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

eug*_*gen 18 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})
Run Code Online (Sandbox Code Playgroud)

http://developers.facebook.com/docs/authentication/上文档的App Login部分所述.

在任何情况下他们都会失效吗?

注意:这不是关于USER访问令牌的问题(已明确记录).有一个相同的问题http://facebook.stackoverflow.com/questions/7322063/does-app-login-access-token-expire错误地关闭了另一个关于USER访问令牌的问题的副本.

Dav*_*ell 30

根据Facebook文档:

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


til*_*ldy 5

创建APP_ACCESS_TOKEN非常简单.你可以使用你的App ID/API KeyApp secret

access_token = YOUR_APP_ID|YOUR_APP_SECRET
Run Code Online (Sandbox Code Playgroud)

示例:1234587968 | bghyuifjk3438483249235903502035023504305


the*_*art 4

我确实知道,导致它们无效的一个条件是,如果您使用 Facebook 开发人员工具重置应用程序密钥。

我不知道使用OAuth方法生成App Token是否会导致它过期。但是,如果您扫描 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;
  }
Run Code Online (Sandbox Code Playgroud)

警告:我永远不会在客户端代码中使用它,因为它会发布您的应用程序机密。然而,在信任服务器环境中,这似乎是可行的方法。

为了测试这一点,我使用 OpenGraph 工具并删除了我的访问令牌,并输入了代码示例中的串联值。然后我访问了我的应用程序的见解以验证它是否可以工作:

<APP_ID>/insights/application_active_users
Run Code Online (Sandbox Code Playgroud)