【问题标题】:Refresh token and Access token in facebook API在 facebook API 中刷新令牌和访问令牌
【发布时间】:2013-05-15 11:20:50
【问题描述】:

当我们在 google api 上执行 oauth2 时,我们会得到一个访问令牌和一个刷新令牌。假设我正在编写一个服务,并且我想定期轮询更改,我可以在每次当前访问令牌失效时使用刷新令牌来获取新的访问令牌。这称为offline access

有没有办法在 facebook 中做同样的事情?有没有类似google api的离线访问版本。

谢谢。

【问题讨论】:

  • 不可以,您最多只能将用户访问令牌延长 2 个月。除非您在谈论应用访问令牌。

标签: facebook-graph-api google-api oauth-2.0 facebook-oauth google-oauth


【解决方案1】:

对于离线访问,您需要在新的访问令牌过期之前将短期访问令牌换成新的访问令牌。 Facebook 具有单一类型的访问令牌(无刷新令牌)。即将过期的访问令牌应该会为您获取新的访问令牌。

使用 Graph API 端点手动扩展令牌 ::

GET /oauth/access_token?  
    grant_type=fb_exchange_token&           
    client_id={app-id}&
    client_secret={app-secret}&
    fb_exchange_token={short-lived-token}

here引用FB的文档 ::

应用无法将过期的短期令牌交换为 长期存在的令牌。上面的流程仅适用于短期令牌 仍然有效。一旦它们过期,您的应用程序必须向用户发送 再次通过登录流程。

请阅读我提到的文档链接中的Expiration and Extending Tokens 部分以进行进一步说明。

【讨论】:

  • 我可以随时请求新的访问令牌吗?也是每 2 分钟一次?
  • 我看不出你不能这样做的原因。该文档说您可以访问一个令牌以获得另一个令牌,它没有指定何时。尝试先使用 fiddler 到达端点,您只需 5 分钟即可获得答案。 :) 祝你好运。
  • 是的,但也许他们会阻止我!其实我不会花时间去检查我的token是否过期,我只是每次都刷新而已!此外,我可以通过相同的程序将一个长寿令牌换成一个新的长寿令牌。
  • 我明白了,如果您发送太多请求,他们肯定会阻止您。不幸的是,我找不到上限是多少。无论如何都要看到这个 - developers.facebook.com/docs/reference/ads-api/…
  • @markzzz 你可以用你的长寿代币换成长寿代币。当我这样做时,发生了一件奇怪的事情。当我检查收到的令牌是否过期时,它被设置为 2056
【解决方案2】:

您可以从here 检查您的令牌的有效性,根据我的令牌它永远不会过期

【讨论】:

    猜你喜欢
    • 2017-06-26
    • 2020-01-09
    • 2021-08-23
    • 2015-04-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 2018-01-05
    • 2022-01-19
    相关资源
    最近更新 更多