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

When i try to authenticate oauth1 rest api returnse Invalide_signature error

我必须访问 Snoobi api 进行分析。 他们提供了不同的步骤来通过 Oauth1 验证 Snoobi api。他们是 Snoobi 有两个 api 请求进行身份验证,第一个请求我可以访问 https://api.snoobi.com/oauth/requesttoken?oauth_callback= 并获得请求 url。 Bu 在第二个请求的情况下 https://api.snoobi.com/oauth/accesstoken 是 return 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>

授权headers OAuth 参数在 HTTP 授权中发送 header

字段值 oauth_consumer_key 您的应用程序消费者密钥(40 个字符) oauth_nonce 随机生成的 ASCII 格式字符串。具有相同随机数和时间戳组合的后续请求将被忽略。建议使用 64 位随机数。 oauth_signature 请求签名 oauth_signature_method HMAC-SHA1″ 或 ”PLAINTEXT oauth_timestamp Unix 时间戳 oauth_version1.0

授权示例header(为便于阅读而添加的换行符):

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 return请求令牌和令牌机密。它们分别包含参数“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

授权headers 字段值 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 服务 returns 字段中的访问令牌和秘密:oauth_token 和 oauth_token_secret。

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