2

How to get data from API with Oauth1? I just tried like this but it did not work.

import UIKit
import OAuthSwift

class TestLogin: UIViewController {

var oauthswift: OAuthSwift?
final let urlString = "https://conversation.8villages.com/1.0/contents/articles"


override func viewDidLoad() {
    super.viewDidLoad()

    self.doOAuth()
}


func doOAuth()
{


    let oauthswift = OAuth1Swift(
        consumerKey:    "******",
        consumerSecret: "******",
        requestTokenUrl: "https://oauth.8villages.com/tokens/request-token",
        authorizeUrl:    "https://accounts.8villages.com/oauth/request-token",
        accessTokenUrl:  "https://accounts.8villages.com/oauth/access-token"
    )


    oauthswift.authorize(
        withCallbackURL: URL(string: "https://8villages.com")!,
        success: { credential, response, parameters in
            print(credential.oauthToken)
            print(credential.oauthTokenSecret)
            print(parameters["userId"])
    },
        failure: { error in
            print(error.localizedDescription)
    }             
    )
}

func getHandleURL () {
    let url = NSURL(string: urlString)
    URLSession.shared.dataTask(with: (url as? URL)!, completionHandler: { (data, response, error) -> Void in

        if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary {

            print(jsonObj!.value(forKey: "data"))

        }

    }).resume()
}

}

so, how must I do or I need a reference example get data from API with Oauth1? I just don't know how to start to build project with OAuth because I search in google, only tutorial OAuth for login with social media.

Abhishek Jain
  • 826
  • 8
  • 20
fermendkis
  • 65
  • 7

1 Answers1

2

In order to send oAuth 1.0 request basically you need to calculate proper query string and body parameter which actually based on your server implementation.

You need to get following query param:

  • oauth_consumer_key
  • oauth_nonce
  • oauth_signature_method
  • oauth_timestamp
  • oauth_version

You can check this blog where all the params are explained in very good detail and also the signature process. Also this answer guide you how to create HMAC-SHA1 signature in iOS

In the end of this process you need to create signature based on signature method which your app and server both agreed upon.

Then a sample POST request should look like following: Which is taken from oAuth1 guide

POST /wp-json/wp/v2/posts
Host: example.com
Authorization: OAuth
               oauth_consumer_key="key"
               oauth_token="token"
               oauth_signature_method="HMAC-SHA1"
               oauth_timestamp="123456789",
               oauth_nonce="nonce",
               oauth_signature="..."

{
    "title": "Hello World!"
}

Hope it helps.

manismku
  • 2,160
  • 14
  • 24