我正在尝试将Garmin与我的应用程序连接。我有authToken和verifier,但是当我调用https://connectapi.garmin.com/oauth-service/oauth/access_token API时,我得到了“无效的nonce和timestamp响应”。这是下面的代码,使我的签名头
var parameter = OAuthSwift.Parameters()
parameter = ["oauth_verifier": "HGJNBBHJ", "oauth_token": "d9209df0-044e-4872-817e-51caa0b38edb"]
let oauthswift = OAuth1Swift(
consumerKey: "********",
consumerSecret: "********"
)
这是一个代码来创建标题
let head = oauthswift.client.credential.makeHeaders(URL(string: "https://connectapi.garmin.com/oauth-service/oauth/access_token")!, method: .POST, parameters: parameter)
这是我得到的标题。
["Authorization": "OAuth oauth_consumer_key=\"********\", oauth_nonce=\"01C7E0DF\", oauth_signature=\"uAZhDpkU3REnm%2Fs%2BEbEK9KPT3wM%3D\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1585117527\", oauth_token=\"d9209df0-044e-4872-817e-51caa0b38edb\", oauth_verifier=\"NvyJlPDlzY\", oauth_version=\"1.0\""]
但是当我调用https://connectapi.garmin.com/oauth-service/oauth/access_token时,我得到了无效的随机数和时间戳错误。
谁能帮我
2条答案
按热度按时间zkure5ic1#
@Awais Shahid你需要为每个API调用更新oauth_nonce&oauth_timestamp。因此,如果它被使用一次,当你尝试使用相同的oauth_nonce和oauth_timestamp第二次,即使是同一个API,它会抛出这个错误。
2fjabf4q2#
https://connectapi.garmin.com/oauth-service/oauth/access_token请求的签名与https://connectapi.garmin.com/oauth-service/oauth/request_token的签名不同。
对于请求令牌请求,您需要使用以下内容对签名基础字符串进行签名:Consumer Secret,包括尾随的“&”字符(例如:asdfpoqw912349234&)
对于访问令牌请求,您需要使用以下内容对签名基础字符串进行签名:消费者秘密和请求令牌秘密,用“&”字符分隔(例如:21304-8hfgdiouy84&012384nlsfdao793492)。返回请求令牌秘密,但请求令牌调用。