从Google的OAuth 2.0获得授权回复

时间:2019-05-11 15:30:22

标签: ios swift oauth-2.0 youtube-data-api google-oauth2

我正在尝试获取授权响应,以便稍后可以使用它使用它来获取访问权限并刷新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的问题。谢谢。

0 个答案:

没有答案