我正在尝试获取授权响应,以便稍后可以使用它使用它来获取访问权限并刷新YouTube API的令牌。我宁愿不使用AeroGear或OAuthSwift之类的外部库。
我已将应用程序添加到Google API&Services控制台,创建了API密钥和OAuth 2.0客户端ID,下载了OAuth 2.0客户端ID plist文件并将其添加到项目中。我可以尝试获取授权,但是在允许访问后,浏览器会返回“ Safari无法打开页面,因为该页面无效”。
我已经在Info.plist中设置了用于回叫的方案:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>my.bundle.id:/oauth2Callback</string>
</array>
</dict>
</array>
我使用以下代码请求授权:
let url = "https://accounts.google.com/o/oauth2/v2/auth"
let client_id = youTube_client_id // client id value from the API console
let redirect_uri = "my.bundle.id:/oauth2Callback"
let response_type = "code";
let scope = "https://www.googleapis.com/auth/youtube"
let state = ""
let login_hint = "userEmail"
let finalURLString = url + "?scope=" + scope + "&response_type=" + response_type + "&redirect_uri=" + redirect_uri + "&client_id=" + client_id + "&login_hint=" + login_hint + "state=" + state
let urlOut = URL(string: finalURLString)!
UIApplication.shared.open(urlOut, options: [:], completionHandler: nil)
我已经在AppDelegate中添加了一些代码,但无论如何它从未到达那里:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
// some code to handle the response
return true
}
我在做什么错?有什么建议么?问题似乎出在回调函数上,但是我在任何地方都找不到如何解决Swift的问题。谢谢。