使用oauthSwift的无效随机数和时间戳Garmin访问令牌API响应

relj7zay  于 2023-06-28  发布在  Swift
关注(0)|答案(2)|浏览(171)

我正在尝试将Garmin与我的应用程序连接。我有authToken和verifier,但是当我调用https://connectapi.garmin.com/oauth-service/oauth/access_token API时,我得到了“无效的nonce和timestamp响应”。这是下面的代码,使我的签名头

  1. var parameter = OAuthSwift.Parameters()
  2. parameter = ["oauth_verifier": "HGJNBBHJ", "oauth_token": "d9209df0-044e-4872-817e-51caa0b38edb"]
  3. let oauthswift = OAuth1Swift(
  4. consumerKey: "********",
  5. consumerSecret: "********"
  6. )

这是一个代码来创建标题

  1. let head = oauthswift.client.credential.makeHeaders(URL(string: "https://connectapi.garmin.com/oauth-service/oauth/access_token")!, method: .POST, parameters: parameter)

这是我得到的标题。

  1. ["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时,我得到了无效的随机数和时间戳错误。
谁能帮我

zkure5ic

zkure5ic1#

@Awais Shahid你需要为每个API调用更新oauth_nonce&oauth_timestamp。因此,如果它被使用一次,当你尝试使用相同的oauth_nonceoauth_timestamp第二次,即使是同一个API,它会抛出这个错误。

2fjabf4q

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)。返回请求令牌秘密,但请求令牌调用。

相关问题