微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Garmin 连接 OAuth 用户访问令牌 签名方法 HMAC-SHA1 的签名无效

如何解决Garmin 连接 OAuth 用户访问令牌 签名方法 HMAC-SHA1 的签名无效

我目前正在实施 Garmin Connect 的授权方法

到目前为止,我已成功检索到 Garmin 文档中所述的未经授权的请求令牌/秘密和令牌验证器。但是,当我尝试从 Garmin 服务器检索用户访问令牌/机密时出现异常。

我得到的例外是:签名方法的签名无效

根据 Garmin 文档,HTTP 请求应如下所示:

POST /oauth-service/oauth/access_token HTTP/1.1
Authorization: OAuth oauth_nonce="7338724861",oauth_signature="<VALUE>",oauth_consumer_key="<VALUE>",oauth_token="<VALUE>",oauth_timestamp="1622196587",oauth_verifier="<VALUE>",oauth_signature_method="HMAC-SHA1",oauth_version="1.0"
Host: connectapi.garmin.com
Accept: */*

我的请求头是这样实现的:

'Authorization' : '''OAuth oauth_verifier="$oauthVerifier",oauth_nonce="$oauthNonce",oauth_token="$oauthToken",oauth_signature="$calculatedHMACSHA1SignatureAccesstoken",oauth_consumer_key="$oauthConsumerKey",oauth_timestamp="$oauthTimestamp",oauth_signature_method="$oauthSignatureMethod",oauth_version="$oauthVersion"''',

我在哪里计算计算出的 HMACSHA1SignatureAccesstoken 如下:

var key = "$consumerSecret&$oauthTokenSecret";
var calculatedHMACSHA1SignatureAccesstoken = hmacSha1(key,baseString);

签名基本字符串如下所示:

 POST&http%3A%2F%2Fconnectapi.garmin.com%2Foauth-service%2Foauth%2Faccess_token&oauth_consumer_key%3D$oauthConsumerKey%26oauth_nonce%3D$oauthNonce%26oauth_signature_method%3$oauthSignatureMethod%26oauth_timestamp%3D$oauthTimestamp%26oauth_token%3D$oauthToken%26oauth_verifier%3D$oauthVerifier%26oauth_version%3D$oauthVersion;

实际的请求头如下所示:

Authorization: OAuth oauth_verifier="<VALUE>",oauth_nonce="1622116490",oauth_timestamp="1622202890",oauth_version="1.0"

如您所见,请求是相同的,但我仍然收到签名方法 HMAC-SHA1 异常的无效签名。

有人会怎么做吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?