gpt4 book ai didi

ios - 我应该如何快速获得 OAuth2.0 访问 token ?

转载 作者:搜寻专家 更新时间:2023-11-01 06:38:09 24 4
gpt4 key购买 nike

我正在尝试制作一个 Unsplash 照片客户端,这需要我使用该网站的 API。根据文档,为了访问照片相关信息(如 pageURls、imageURLs 等),需要 oAuth2.0。它声明我必须做以下事情:

  1. 将用户转至 https://unsplash.com/oauth/authorize带有一些查询参数。
  2. 如果用户接受请求,用户将被重定向到redirect_ui(其中一个参数),授权码在code查询参数中
  3. https://unsplash.com/oauth/token 发出 POST 请求带有一些参数。

这就是我尝试在代码中实现它的方式:

ViewController.swift

 class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
authenticator()
// Do any additional setup after loading the view, typically from a nib.
}


func authenticator(){

Alamofire.request(.GET, "https://unsplash.com/oauth/authorize", parameters: [
"client_id": "2902affb00634248f77b3c5c7a4ba4232fa36e3cbaad826b223a27f3df57e642"
, "redirect_uri": "Sample//:" ,
"response_type" : "code" ,
"scope":"" ]).responseJSON{ response in
print("original URL request : \(response.request) ")
print("URL response : \(response.response) ")
}


Alamofire.request(.POST, "https://unsplash.com/oauth/authorize", parameters: [
"client_id" : "2902affb00634248f77b3c5c7a4ba4232fa36e3cbaad826b223a27f3df57e642",
"client_secret":"6e85c0e5bcda025f0553e1343dcbdd8a892b0db1cc3a653055d84ce44c217bb9",
"redirect_uri" : "Sample//:" ,
"code" : "c15781809f4ee781e6019b958a2702be0dab61e89df96863693dbd7d48bacd53" ,
"grant_type":"authorization_code" ])
.responseJSON { response in
print(response.request) // original URL request
print(response.response) // URL response
print(response.data) // server data
print(response.result) // result of response serialization

if let JSON = response.result.value {
print("JSON: \(JSON)")
}
}
}

但这就是我得到的:

  Optional(<NSMutableURLRequest: 0x7f9cf959f700> { URL:        https://unsplash.com/oauth/authorize })
Optional(<NSHTTPURLResponse: 0x7f9cf941f920> { URL: https://unsplash.com/oauth/authorize } { status code: 422, headers {
"Accept-Ranges" = bytes;
Connection = "keep-alive";
"Content-Length" = 8440;
"Content-Type" = "text/html; charset=utf-8";
Date = "Thu, 18 Aug 2016 15:24:30 GMT";
Server = Cowboy;
"Strict-Transport-Security" = "max-age=31536000";
Via = "1.1 vegur, 1.1 varnish";
"X-Cache" = MISS;
"X-Cache-Hits" = 0;
"X-Ratelimit-Limit" = 100;
"X-Ratelimit-Remaining" = 94;
"X-Request-Id" = "f00ae2f9-6369-4526-9b28-283c294e2a30";
"X-Runtime" = "0.012134";
"X-Served-By" = "cache-sin6920-SIN";
"X-Timer" = "S1471533870.429494,VS0,VE550";
} })
Optional(<3c21444f 43545950 45206874 6d6c3e0a 3c68746d 6c3e0a3c 68656164 3e0a2020 ....2e 636f6d2f 616e616c 79746963 732e6a73 272c2767 6127293b 0a0a2020 20206761 28276372 65617465 272c2027 55412d33 36303439 3637302d 34272c20 27617574 6f27293b 0a202020 20676128 2773656e 64272c20 27706167 65766965 7727293b 0a202020 20676128 2773656e 64272c20 27657665 6e74272c 20276163 74696f6e 272c2027 34323227 293b0a20 203c2f73 63726970 743e0a0a 3c2f626f 64793e0a 3c2f6874 6d6c3e0a>)
FAILURE

我该如何解决这个错误?

最佳答案

你想出来了吗?如果没有,我会给你一个提示。按照我的步骤,您将获得成功并从 Unsplash 返回访问 token 。

首先,我们将了解如何使用此请求 https://unsplash.com/oauth/authorize。对于此请求,您需要使用 UIWebView,因为这将返回一个 HTML 页面。

试试这个 https://unsplash.com/oauth/authorize?client_id=Your_App_ID&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=public+read_user+write_user+read_photos+write_photos+ write_likes+read_collections+write_collections 与 UIWebView。

在使用 UIWebView 发出此请求后,您将获得如下返回的代码 https://unsplash.com/oauth/authorize/f2ad36deb30b37a2614898e366b84e7c0f68fccd0358565cfbdc2637e*****

/authorize/之后的代码是您需要用请求 https://unsplash.com/oauth/token 填充 code 参数的代码 - 现在您可以使用 Alamofire 获取您的 token 。

如果还有问题就提出问题

关于ios - 我应该如何快速获得 OAuth2.0 访问 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39022671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com