当我尝试验证oauth1 rest api returnse Invalide_signature错误

时间:2017-11-20 02:53:59

标签: rest api authentication oauth oauth-1.0a

我必须访问Snoobi api才能进行分析。 他们提供了不同的步骤来通过Oauth1验证Snoobi api。他们是enter image description here Snoobi有两个api调用验证第一个请求我可以访问https://api.snoobi.com/oauth/requesttoken?oauth_callback=并获取请求URL。 如果是第二次请求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格式随机生成的字符串。具有相同nonce和timestamp组合的后续请求将被忽略。建议使用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授权视图

用户点击“授权”按钮后,会将其重定向到您的回调网址,并将oauth_token和verifier添加为网址参数:

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格式随机生成的字符串。具有相同nonce和timestamp组合的后续请求将被忽略。建议使用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”

成功时,accessstoken服务在字段中返回访问令牌和秘密:oauth_token和oauth_token_secret。

1 个答案:

答案 0 :(得分:0)

当我尝试将auth验证程序更改为发布表单数据时,它会授予访问权限。我认为文档错误定义了。