ios - Oauth1 iOS 从 API 获取数据

标签 ios swift oauth

如何使用Oauth1从API获取数据?我只是尝试了这样的方法,但没有成功。

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()
}

}

那么,我该怎么做或者我需要一个引用示例使用 Oauth1 从 API 获取数据?我只是不知道如何开始使用 OAuth 构建项目,因为我在 google 中搜索,只有使用社交媒体登录的教程 OAuth。

最佳答案

为了发送 oAuth 1.0 请求,基本上您需要计算正确的查询字符串和正文参数,这些参数实际上基于您的服务器实现。

您需要获取以下查询参数:

  • oauth_consumer_key
  • oauth_nonce
  • oauth_signature_method
  • oauth_timestamp
  • oauth_version

您可以检查 this blog,其中所有参数以及签名过程都有非常详细的解释。另外this answer还指导您如何在iOS中创建HMAC-SHA1签名

在此过程的最后,您需要根据您的应用程序和服务器都同意的签名方法创建签名。

那么示例 POST 请求应如下所示:取自 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!"
}

希望有帮助。

关于ios - Oauth1 iOS 从 API 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42663006/

相关文章:

iphone - 导航栏下方的工具栏(?) - iPhone

swift - 在标签中打印 JSON 响应时出现问题

ios - Firebase 了解用户是否确实与 Firebase 断开连接

oauth - 通过身份验证创建 gitlab oauth token

iphone - 如何制作可扩展的 UITableViewCell

ios - 错误代码 : Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set."

ios - View Controller 显示黑屏而不是从 Firebase 数据库 Swift iOS 获取用户

ios - 登录时使用所有值打开选项卡栏 Controller

ruby-on-rails - omn​​iauth OAuthException 和 OAuth::Unauthorized

authentication - 如何正确使用WebAuthenticationCoreManager获取Microsoft帐户 token ?