寻找一种快速生成OAuth 1签名的方法

时间:2016-07-20 20:45:18

标签: ios swift oauth yelp

我正在开发一个小型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
  7. 如何生成#4,5,6

    我查看了其他https://docs.wso2.com/display/ML111/Setting+up+Microsoft+SQL,但没有帮助。

    TIA!

2 个答案:

答案 0 :(得分:2)

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

它被称为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

答案 1 :(得分:0)

你可以使用这个库OAuthSwift,如果你正在使用RxSwift + Moya,这个版本将完全适合你RxSocialConnect-iOS