【问题标题】:Google OAuth 2.0 invalid_request, Missing SchemeGoogle OAuth 2.0 invalid_request,缺少方案
【发布时间】:2017-06-15 00:41:56
【问题描述】:

我无法在 ios 上授权 Google OAuth,Safari 总是这样说

400 这是一个错误。

redirect_uri 的参数值无效: 缺少方案:com.googleusercontent.apps.984813079630-3lmlrubo9345ng4qhtf62ud1i02m6ta8

我已经在 Google Console 页面上多次检查 API Key、Client_ID、client_secret 并在 xcode 中创建了 url 方案。

这是我的 Swift 代码:

oauthswift = OAuth2Swift( 消费者密钥:“xxxxx-3lmlrubo9345ng4qhtf62ud1i02m6ta8.apps.googleusercontent.com”, 消费者秘密:“xxxtg6qslUOC2np1sBg0hnWgBcpZb4”, authorizeUrl: "https://accounts.google.com/o/oauth2/v2/auth", 响应类型:“令牌” ) 让句柄 = oauthswift.authorize( withCallbackURL: URL(字符串: "com.googleusercontent.apps.984813079630-3lmlrubo9345ng4qhtf62ud1i02m6ta8")!, 范围:“个人资料”,状态:“GOOGLE”, 成功:{凭证,响应,参数 打印(凭证.oauthToken) // 做你的请求 }, 失败:{错误 打印(错误.localizedDescription) } )

你能帮我吗?

【问题讨论】:

    标签: ios swift oauth


    【解决方案1】:

    解决这个问题非常简单: 只需在您的架构之前设置前缀。

    示例: 您的架构参数:

    com.googleusercontent.apps.984813079630-3lmlrubo9345ng4qhtf62ud1i02m6ta8
    

    您的 iOS 应用程序的标识符:

    net.the-red-queen.www
    

    所以,重定向 URI 参数的值为:

    net.the-red-queen.www:com.googleusercontent.apps.984813079630-3lmlrubo9345ng4qhtf62ud1i02m6ta8
    

    【讨论】:

    • 不知道谷歌后来是否改变了scheme格式,因为有些教程没有提到这一点。效果很好,非常感谢!
    【解决方案2】:

    我认为实际的问题是您没有指定完整的 URI。 (架构没有冒号和路径。)尝试让你的 redirect_uri 看起来像下面这样(当然编码正确):

    com.googleusercontent.apps.984813079630-3lmlrubo9345ng4qhtf62ud1i02m6ta8:/oauth
    

    【讨论】:

      【解决方案3】:

      您可能应该重新检查 Google 开发控制台。您的 clientID 可能被错误地注册为 Javascript Web Apps 而不是 Mobile Apps

      【讨论】:

      • 我再次检查并删除了Web自动生成的密钥它仍然不起作用
      • 我更改了 withCallbackURL: URL(string: localhost 它们允许登录谷歌但无法重新打开 ios 应用
      • 您是否将 GoogleService-Info.plist 添加到您的应用,并将带有 REVERSED_CLIENT_ID 的 URL 类型添加到您的应用 plist?确保您的反向 ID 与您在 Google 开发控制台上的 iOS 客户端 ID 匹配
      • 绝对是的,我已将方案更改为 com.googleusercontent.apps.984813079630-3lmlrubo9345ng4qhtf62ud1i02m6ta8:/oauth 然后它现在可以工作但另一个问题发生了:stackoverflow.com/questions/44558561/…
      【解决方案4】:

      我正在编写一个 Android 客户端,这些信息有所帮助,但并不是我所需要的。我发现我必须使重定向 uri 有点不同。

      将您正在使用的 uri 作为手机上的目标(通常是包名称,但如果在应用的 build.gradle 文件中的 applicationId 中重新定义,则它可能不同) .

      在目标末尾追加::/oauth2callback

      所以我的包裹是com.fooboy.testapp3。添加上述位,重定向 uri 变为:

      com.foobly.testapp3:/oauth2callback.

      还有很多其他事情需要恰到好处(尤其是在 google api 控制台中),但这是我的最后一招。

      祝你好运(你需要它)!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-21
        • 1970-01-01
        • 2016-12-14
        • 2014-09-16
        • 2015-07-13
        • 2012-01-02
        • 2023-01-11
        相关资源
        最近更新 更多