oauth2.0如何传递访问令牌
Posted
技术标签:
【中文标题】oauth2.0如何传递访问令牌【英文标题】:oauth2.0 how to pass access token 【发布时间】:2013-06-24 10:20:15 【问题描述】:我正在努力将 OAuth2 集成到 REST API,我想知道我应该如何发送 access_token 参数请求。
示例: 我的服务器接受两条路线: POST /写 获取/读取
对于 /write,我应该把 access_token 放在 POST 中吗?curl http://api.localhost/write -d 'access_token=[ACCESS_TOKEN]'
对于 /read,我应该把它放在 GET 中吗?curl http://api.localhost/read?access_token=[ACCESS_TOKEN]
或者在这两种情况下,它都应该通过 POST 发送吗?
谢谢, 加西姆
【问题讨论】:
请注意,/write
和 /read
都不遵循 RESTful API 标准。资源名称应该是集合,而不是动词。 HTTP 已经有自己的一组动词。例如,如果您的 API 读取/写入文件,那么端点应该是 /files
和 GET
请求将读取文件,而 PUT
或 POST
应该创建一个文件。 (PUT
如果您的客户端指定 ID,POST
如果服务器指定)
【参考方案1】:
使用 OAuth,令牌通常在请求标头中传递。您可能希望对 POST 或 GET 尝试类似以下的操作:
发帖:curl http://api.localhost/write -H 'Authorization: Bearer ACCESS_TOKEN'
获取:curl http://api.localhost/read -H 'Authorization: Bearer ACCESS_TOKEN'
授权键/值对的值部分可能因 REST 服务提供商而异。以Github 为例,标头键/值对如下所示:
curl -H "Authorization: token your_token" https://api.github.com/repos/user/repo
您可能需要查阅网络服务提供商文档以了解详细信息。
【讨论】:
@user984832 是单词Bearer
是关键字还是访问令牌的一部分
Bearer
是实施 OAuth 2 的网站经常使用的关键字。
你是如何从 api.localhost/read 切换到 api.github.com/repos/user/repo??
带有 curl 的 POST 应该添加 -X
: -X 选项指定与远程服务器通信时将使用哪种 HTTP 请求方法。以上是关于oauth2.0如何传递访问令牌的主要内容,如果未能解决你的问题,请参考以下文章
无法在跨客户端谷歌 oauth2.0 中交换访问令牌和刷新令牌的授权码
OAuth2.0 令牌奇怪行为(Invalid Credentials 401)