0

我必须访问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。我无法弄清楚这个问题......我的示例站点是具有这些身份验证的示例站点,这些身份验证由 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″ or ”PLAINTEXT oauth_timestamp Unix timestamp 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。

4

1 回答 1

0

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

于 2017-12-13T11:02:35.583 回答