如何使用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()
}
}
那么,我该怎么办?或者我需要一个参考示例从API获取带有Oauth1的数据?我只是不知道如何开始使用OAuth构建项目,因为我在谷歌搜索,只有教程OAuth用于登录社交媒体。
答案 0 :(得分:2)
为了发送oAuth 1.0请求基本上你需要根据你的服务器实现计算正确的查询字符串和body参数。
您需要获得以下查询参数:
您可以查看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!"
}
希望它有所帮助。