http - 客户端应该如何将 facebook 访问 token 传递给服务器?

标签 http rest authentication oauth-2.0 facebook-access-token

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

  1. 可能作为HTTP问号后面的参数

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

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

最佳答案

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

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

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,甚至是检索数据。检查这个link查看他们的文档。请注意,他们使用 POST 检索数据并传递 JSON 参数。

关于http - 客户端应该如何将 facebook 访问 token 传递给服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16526211/

相关文章:

jquery - Node.js 如何解析/执行从 Node 服务器接收的 javascript?

objective-c - 如何在特殊类中建立HTTP连接?

Android AsyncTask 和登录

javascript - 蒙哥错误: E11000 duplicate key error collection with passport

firebase - 我应该尽量不在 LocalStorage 上保存 Firebase Auth

apache - 当网站是公开的并且所有反向链接都是 Http 时升级到 SSL

Java:URI 中的非法字符

jsf - 集成 Spring MVC 和 JSF 2.1

rest - Elasticsearch中第一个节点的父级规范

java - Spring JAX-RS 客户端 - 获取响应状态