【发布时间】:2018-05-03 05:23:41
【问题描述】:
我必须访问 Snoobi api 进行分析。 他们提供了不同的步骤来通过 Oauth1 对 Snoobi api 进行身份验证。他们是 Snoobi 有两个用于身份验证的 api 调用,第一个请求我可以访问 https://api.snoobi.com/oauth/requesttoken?oauth_callback= 并获取请求 url。 Bu 在第二次请求https://api.snoobi.com/oauth/accesstoken 的情况下返回 invlid_signature。 我想不通这个问题...... 我的示例站点是Sample site,这些身份验证由 DDO oauth1 库完成。 认证步骤如下。 第 1 步:请求令牌 Snoobi API 的请求令牌端点位于:
https://api.snoobi.com/oauth/requesttoken
使用 HTTP POST 到 URL 发出请求:
https://api.snoobi.com/oauth/requesttoken?oauth_callback=<your application callback, URL encoded>
授权标头 OAuth 参数在 HTTP 授权标头中发送
字段值 oauth_consumer_key 您的应用程序消费者密钥(40 个字符) oauth_nonce 随机生成的 ASCII 格式的字符串。具有相同随机数和时间戳组合的后续请求将被忽略。建议使用 64 位随机数。 oauth_signature 请求签名 oauth_signature_method HMAC-SHA1″ 或 “PLAINTEXT oauth_timestamp Unix 时间戳 oauth_version 1.0
授权标头示例(为便于阅读添加了换行符):
Authorization: OAuth oauth_consumer_key=”2cab9166c5180256f4788a7669c181c84bec61ee”\,oauth_signature_method=”HMAC-SHA1″,\oauth_nonce=”7524122124ddba21d644043.98235934″\
,oauth_timestamp=”1306239517″,\
oauth_version=”1.0″,\
oauth_signature=”kP6LwV%2FJfs9YcG4irDJuoP271uU%3D”
请求成功时 /oauth/requesttoken 返回请求令牌和令牌密钥。它们分别来自参数“oauth_token”和“oauth_token_secret”。此外,在响应参数“authentification_url”中提供了身份验证 URL。 URL 类似于:https://api.snoobi.com/oauthgrant.php,您的应用程序应将用户的浏览器重定向到此地址。如果用户尚未登录到 Snoobi,系统将提示他这样做。 登录后,用户可以访问他们可以授予应用程序访问权限的视图:
Snoobi 的 OAuth 授权视图
一旦用户单击授予按钮,他就会被重定向到您的回调 url,并添加 oauth_token 和验证器作为 url 参数:
http://youapp.com/callback.php?oauth_token=66393e59b10dddc112a8d1cbca9f9559d01127a1&verifier_token=051dd4f45b791957d8c12b83b9810365bbb50e63
第 2 步:访问令牌 现在您的应用程序已经获取了请求令牌、秘密和验证者,它已准备好调用访问令牌端点以获取永久访问令牌。 访问令牌端点是:
https://api.snoobi.com/oauth/accesstoken
授权标头 字段值 oauth_consumer_key 您的应用程序消费者密钥(40 个字符) oauth_nonce 以 ASCII 格式随机生成的字符串。具有相同随机数和时间戳组合的后续请求将被忽略。建议使用 64 位随机数。 oauth_timestamp Unix 时间戳 oauth_version 1.0 oauth_token 你的请求令牌 oauth_signature 签名
Authorization: OAuth oauth_verifier=”ff17678750b3ca5b5263babee610bb9f47f7a1b6″,\oauth_consumer_key=”2cab9166c5180256f4788a7669c181c84bec61ee”,\oauth_signature_method=”HMAC-SHA1″,\
oauth_nonce=”2556773534ddb9f01d00518.41306989″,\
oauth_timestamp=”1306238721″,\
oauth_version=”1.0″,\
oauth_token=”f3a4eb25c1267f28d5de54e89a78db48f4d7ed30″,\
oauth_signature=”%2F9y%2BtMdCZk1uRYawXsfWHb%2BPmig%3D”
成功时,accesstoken 服务会在 oauth_token 和 oauth_token_secret 字段中返回访问令牌和密钥。
【问题讨论】:
标签: rest api authentication oauth oauth-1.0a