我正试图授权我使用OAuth 1.0a进行服务。我可以执行requestToken和authorize步骤,但是当我调用accessToken URL时,我会得到一个401个未经授权的响应,其中包含以下消息:
OAuth Verification Failed: Can't exchange request token "THE_TOKEN" for access token. No such token or not authorized%
我掩盖了全权证书和网址。
请求令牌URL:https://url-to-the-service.com/oauth/requestToken
授权令牌网址:https://url-to-the-service.com/oauth/authorize
访问令牌URL:https://url-to-the-service.com/oauth/accessToken
我从该服务获得的证书如下:
consumer_key = CONSUMER_KEY
consumer_secret = CONSUMER_SECRET
步骤1-请求临时令牌
curl -v -X GET --url "https://url-to-the-service.com/oauth/requestToken?oauth_version=1.0& \
oauth_timestamp=1516721112& \
oauth_nonce=25794& \
oauth_signature_method=PLAINTEXT& \
oauth_consumer_key=CONSUMER_KEY& \
oauth_signature=CONSUMER_SECRET%26"然后,该服务以下列方式作出响应:
oauth_callback_confirmed=true&oauth_token=THE_TOKEN&oauth_token_secret=THE_TOKEN_SECRET&xoauth_token_ttl=3600
步骤2-使用临时令牌授权我并获得一个验证器
然后在浏览器中输入以下内容:
...and提示我登录到该服务。当我在登录后按下“授权”按钮时,我将被转发到以下URL:
步骤3-请求访问令牌
最后,通过向https://url-to-the-service.com/oauth/accessToken添加oauth_verifier和令牌秘密向oauth_signature发出请求。
curl -v -X GET --url "https://url-to-the-service.com/oauth/accessToken?oauth_version=1.0& \
oauth_timestamp=1516730938& \
oauth_nonce=30888& \
oauth_signature_method=PLAINTEXT& \
oauth_consumer_key=CONSUMER_KEY& \
oauth_signature=CONSUMER_SECRET%26THE_TOKEN_SECRET& \
oauth_token=THE_TOKEN& \
oauth_verifier=123456789"但该服务的回应是:
OAuth Verification Failed: Can't exchange request token "THE_TOKEN" for access token. No such token or not authorized%
那我错过了什么?
发布于 2018-02-02 13:36:37
当接收到具有无效的客户端凭据()、无效或过期的令牌、无效签名或无效或使用的nonce的请求时,服务器应该返回401 (未经授权)状态代码。
我不确定步骤1中的值xoauth_token_ttl=3600是分钟还是秒。如果是秒,1516721112的第一个请求和1516730938的访问令牌请求已经过期。(1516730938 - 1516721112 = 9826)
发布于 2018-02-01 02:42:58
看起来,您在cURL请求中强制执行GET请求。尝试下面这样的帖子请求:
curl -v -X POST --url "https://url-to-the-service.com/oauth/accessToken?
oauth_version=1.0& \
oauth_timestamp=1516730938& \
oauth_nonce=30888& \
oauth_signature_method=PLAINTEXT& \
oauth_consumer_key=CONSUMER_KEY& \
oauth_signature=CONSUMER_SECRET%26THE_TOKEN_SECRET& \
oauth_token=THE_TOKEN& \
oauth_verifier=123456789"请参考OAuth1文档。在此引用以供参考:
令牌交换 授权的最后一步是将临时凭据(请求令牌)交换为长寿凭据(也称为访问令牌)。此请求还将销毁临时凭据。 临时凭据通过向令牌请求端点发送POST请求(通常为/oauth1/access)而转换为长寿命凭据。此请求必须由临时凭据签名,并且必须包括授权步骤中的oauth_verifier令牌。
https://stackoverflow.com/questions/48408731
复制相似问题