31

在每次调用我的 REST API 时,我都要求客户端传递用户的 facebook 访问令牌,该令牌对用户进行身份验证。传递此令牌的最佳做法是什么?

  1. 也许作为 HTTP 问号后面的参数

    GET /api/users/123/profile?access_token=pq8pgHWX95bLZCML
    
  2. 或以某种方式在请求的标头中,类似于 HTTP 基本身份验证

  3. 也许是第三种选择?(我已经排除在 JSON 中传递它,因为我希望令牌也可以在GET调用中传递,所以我认为 JSON 不适合那里)
4

1 回答 1

40

如果您查看所有流行的 OAuth 提供商(Google、Facebook、Pocket、Git 等)提供的 API 端点,您会发现它们都有 HTTPS 端点。

您可以将访问令牌传递给提供者的方式是 -

i)作为查询参数-

https://yourwebsite.com/api/endpoint?access_token=YOUR_ACCESS_TOKEN

ii)在请求标头中-

 GET /api/users/123/profile HTTP/1.1
 Host: yourwebsite.com
 Date: Tue, 14 May 2013 12:00:00 GMT
 Authorization: <YOUR_ACCESS_TOKEN>

这两种方法通常被大多数 API 支持。你可以考虑做同样的事情。

iii) Pocket API 根本不使用 GET。他们使用 POST 处理所有请求,甚至用于检索数据。检查此链接以查看他们的文档。请注意,他们使用 POST 来检索数据并传递 JSON 参数。

于 2013-05-14T05:33:39.310 回答