【问题标题】:Getting the "facebook code" to obtain long-lived-access-token from server side. Django获取“facebook 代码”以从服务器端获取长期访问令牌。姜戈
【发布时间】:2017-04-05 10:13:27
【问题描述】:

我正在尝试关注此doc 以获得长期用户令牌。 (请参阅“从服务器端长期令牌生成长期用户令牌”)

图表非常明确,我认为应该很容易。

但是当我尝试获取“代码”时,问题就来了。

如您所见,这应该是请求:

https://graph.facebook.com/oauth/client_code?access_token=...&client_secret=...&redirect_uri=...&client_id=...

但问题是,由于我在服务器端,我无法重定向用户,因为这是客户端工作。 (不是吗?)

所以,既然我收到了这个错误:

{
  "error": {
    "message": "Missing redirect_uri parameter.",
    "type": "OAuthException",
    "code": 191,
    "fbtrace_id": "EqPakhHX9i6"
  }
}

我试过了:

&redirect_uri=https://www.google.com/&(看看它是否吃掉那个 URI)

但没有机会。

我一直在寻找类似的问题,但人们习惯使用客户端,而我无权访问客户端。实际上,客户正在等待我的code,如图所示。

所以,我不知道该怎么做。

也许这里有人有同样的问题。

【问题讨论】:

  • 所以你指的是“从服务器端长寿命令牌生成长寿命用户令牌”部分? (这是该页面上唯一一个code 参数发挥作用的页面。)它描述了创建要在客户端使用的长期令牌的过程。因此,如果您没有客户端,那么一开始就实施该流程是没有意义的。
  • 好的,很酷,有没有办法在服务器端做到这一点?如果那是在客户端,为什么它说“来自服务器端”?这是我第一次在应用程序中使用 Facebook。也许这是一个愚蠢的问题,但我不知道我该怎么做。
  • 您需要先拥有短期用户访问令牌。获得其中一个总是意味着首先要通过登录流程,并且必须在客户端(即在用户的浏览器中)发生。没有办法仅在服务器端登录用户。
  • 是的,我已经做到了。当我获得令牌时,我能否(是否需要)获得长期用户令牌? (感谢您的回答:))
  • 将短期用户访问令牌交换为长期用户访问令牌的流程是该页面上描述的第一个流程,并且不涉及额外的 code 参数 - 您只需一次服务器端 API 调用,并获得长期存在的令牌作为回报。

标签: python django facebook facebook-graph-api


【解决方案1】:

只使用带有 cURL 的下一个 url:

https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id={client-id}&client_secret={secret-id}&fb_exchange_token={short-token}

【讨论】:

    猜你喜欢
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 2012-05-13
    • 2012-07-11
    • 2014-10-08
    • 2018-07-17
    • 2019-12-21
    相关资源
    最近更新 更多