2016-07-20 17 views
2

zu generieren Ich arbeite an einem kleinen schnellen Programm mit Yelp API über OAuth-1 zu arbeiten. Ich suche nach einer HMAC-SHA1-Signatur.Auf der Suche nach einer schnellen Möglichkeit, OAuth 1 Signatur

Ich habe den Kundenschlüssel, geheimen Schlüssel, Token und Token Geheimnis.

Von dem, was ich weiß, 1 eine API-Anfrage mit OAuth zu machen, müssen wir die folgenden Attribute:

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

Wie generiere ich # 4,5,6

ich andere this aussehen, aber nicht helfen.

TIA!

+0

Haben Sie das herausgefunden, ohne eine dritte Bibliothek zu benutzen? –

+0

Haben Sie Ihre Lösung ohne Drittanbieterbibliothek erhalten? –

Antwort

1

Ganz späte Antwort passen, aber ich behaupte, ein sehr leichtes Swift 3 einfache Erweiterung verwenden, die 1,0 OAuth fügt eine Fähigkeit zu URLRequest.

Es heißt OhhAuth. Kann einfach mit Cocoa-Pods oder dem Swift-Paket-Manager installiert werden.

pod 'OhhAuth' 

Ich werde ein Anwendungsbeispiel auf hinzufügen, wie mit dem Twitter-API zu interagieren:

let cc = (key: "<YOUR APP CONSUMER KEY>", secret: "<YOUT 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() 

Wenn Sie daran interessiert sind nur in der Signatur sind, können Sie verwenden:

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