是否可以通过请求标头传递 Facebook Graph API 访问令牌?

Posted

技术标签:

【中文标题】是否可以通过请求标头传递 Facebook Graph API 访问令牌?【英文标题】:Is it possible to pass Facebook Graph API access token through request header? 【发布时间】:2015-07-04 19:03:48 【问题描述】:

我正在使用Postman 测试 Facebook Graph API v2.3。 虽然可以通过将访问令牌放入查询字符串来获得响应,如下所示:

https://graph.facebook.com/v2.3/me?access_token=my_access_token

我想知道是否可以对 HTTP 请求标头做同样的事情,就像这样:

GET /v2.3/me HTTP/1.1
Host: graph.facebook.com
Authorization: <my_access_token>
Cache-Control: no-cache
Postman-Token: <postman_token>

基于 *** 上的类似问题(即How should a client pass a facebook access token to the server?),这似乎应该是可能的。

对此有什么想法吗?


编辑:

让我感兴趣的是,当我使用 Facebook Developers 提供的API Graph Explorer 时,该沙箱中似乎也没有查询字符串。这是如何运作的?

Facebook API Graph Explorer 请使用查询字符串作为访问令牌。感谢@CBroe的回复。

【问题讨论】:

当然,Graph API Explorer 将访问令牌作为查询字符串参数传递(用于 GET 请求),当您查看它在浏览器的开发人员工具网络面板中发出的请求时,您可以清楚地看到。 @CBroe 我认为你是对的。检查网络面板后,很明显 Graph API Explorer 使用查询字符串传递了访问令牌。这是否意味着查询字符串是传递它的唯一方法? 【参考方案1】:

有可能

Authorization: Bearer AccessTokenHere

例如

curl --header "Authorization: Bearer CAAC...ZD" https://graph.facebook.com/me

此答案之前建议使用“OAuth”而不是“Bearer”作为token type。两者都可以,但“Bearer”是标准中出现的类型。此外,在完成 Facebook 的 OAuth 流程时,他们的回复中的token_typebearer。所以总而言之,“Bearer”更有意义。

【讨论】:

太棒了!!我只是错过了访问令牌前面的“OAuth”。谢谢@phwd 这是否记录在 Facebook 的某个地方? @phwd 谢谢。我不清楚 Facebook 的 API 是否符合 OAuth(但这是有道理的)。

以上是关于是否可以通过请求标头传递 Facebook Graph API 访问令牌?的主要内容,如果未能解决你的问题,请参考以下文章

如何在所有请求标头中传递授权令牌 - Spring Boot java

我是不是在发布请求的标头或正文中传递身份令牌?

如何将请求标头信息传递给 Angular6 应用程序(JWT 通过请求标头发送)

是否在自定义 HTTP 标头 RESTful 中传递租户?

如何将标头从请求传递到集成响应?

在 jQuery AJAX GET 调用中传递请求标头