问题描述
我目前正在实施 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 (将#修改为@)