【问题标题】:Looking for a swift way to generate OAuth 1 signature寻找一种快速生成 OAuth 1 签名的方法
【发布时间】:2016-07-20 20:45:17
【问题描述】:

我正在开发一个小型 swift 程序,通过 OAuth-1 使用 Yelp API。我正在寻找生成 HMAC-SHA1 签名。

我有客户密钥、密钥、令牌和令牌秘密。

据我所知,要使用 OAuth 1 发出 API 请求,我们需要以下属性:

  1. oauth_consumer_key
  2. oauth_token
  3. oauth_signature_method = (HMAC-SHA1)
  4. oauth_signature
  5. oauth_timestamp
  6. oauth_nonce

如何生成#4,5,6

我查看了其他this,但没有帮助。

TIA!

【问题讨论】:

  • 您在不使用第三方库的情况下解决了这个问题吗?
  • 您是否在没有第三方库的情况下获得了解决方案?

标签: ios swift oauth yelp


【解决方案1】:

响应很晚,但我维护了一个非常轻量级的 Swift 3 易于使用的扩展,它将 OAuth 1.0a 功能添加到 URLRequest。

它叫做OhhAuth。可以使用 Cocoa Pods 或 Swift 包管理器轻松安装。

pod 'OhhAuth'

我将添加一个关于如何与 Twitter API 交互的使用示例:

let cc = (key: "<YOUR APP CONSUMER KEY>", secret: "<YOUR APP CONSUMER SECRET>")
let uc = (key: "<YOUR USER KEY>", secret: "<YOUR USER SECRET>")

var req = URLRequest(url: URL(string: "https://api.twitter.com/1.1/statuses/update.json")!)

let paras = ["status": "Hey Twitter! \u{1F6A7} Take a look at this sweet UUID: \(UUID())"]

req.oAuthSign(method: "POST", urlFormParameters: paras, consumerCredentials: cc, userCredentials: uc)

let task = URLSession(configuration: .ephemeral).dataTask(with: req) { (data, response, error) in

    if let error = error {
        print(error)
    }
    else if let data = data {
        print(String(data: data, encoding: .utf8) ?? "Does not look like a utf8 response :(")
    }
}
task.resume()

如果你只对签名感兴趣,可以使用:

OhhAuth.calculateSignature(url: URL, method: String, parameter: [String: String],
consumerCredentials cc: Credentials, userCredentials uc: Credentials?) -> String

【讨论】:

  • 我只对签名感兴趣,但我需要使用其他参数生成我的签名:oauth_nonce、oauth_timestamp,有可能吗?
  • @MilletAntoine oauth_nonceoauth_timestamp 是标准的一部分,所以我的库已经自动为您完成了。您可以在此处验证:github.com/mw99/OhhAuth/blob/master/Sources/OhhAuth.swift#L134 或者只是查看生成的签名字符串,它将包含参数。
【解决方案2】:

你可以使用这个库OAuthSwift,如果你正在使用 RxSwift + Moya,这个库将非常适合你RxSocialConnect-iOS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-09
    • 2016-06-09
    • 1970-01-01
    • 2023-03-14
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    相关资源
    最近更新 更多