如何使用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/