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 (将#修改为@)