【问题标题】:google Oauth2.0 authenticate - not continue to redirect_urigoogle Oauth 2.0 身份验证 - 不继续重定向_uri
【发布时间】:2015-02-25 21:35:46
【问题描述】:

我正在尝试使用 google 登录我的网站。 用户可以在 3 个域中访问我的网站

1) 常规链接(HTTP 和 WWW...) 2) http://example.com - 没有 www 3)apps.facebook.com/example - facebook 应用程序

我们希望允许用户在这三个选项中连接谷歌。

我们正在使用 gapi(google javascript 库)来验证用户身份。 我的代码如下:

   var config = {
        'client_id': 'my_client_id',
        'scope': 'my_scopes',
        **'redirect_uri' : "https://www.example.com/oauth/",**
        'immediate': immediate
    };
    **gapi.auth.authorize(config, function(){});**

如您所见,我将重定向 uri 设置为 gapi 配置的一部分。 我们创建了一些弹出窗口,以便为三个域提供相同的 uri。

我的问题是,如果我在没有 WWW 的情况下从域登录到我的站点,则授权不起作用并且用户没有重定向到 redirect_uri 链接——这意味着,我们没有他的令牌。

如果我要删除 redirect_uri 中的 WWW(所以它看起来像 https://example.com/oauth/) facebook 域不起作用...

真是郁闷啊。。 有没有人熟悉这种问题? 有什么想法吗?

我们在这上面花了太多时间......

谢谢 Z

【问题讨论】:

    标签: oauth oauth-2.0 google-oauth google-authentication google-api-js-client


    【解决方案1】:

    您可以在 Google API 控制台中为单个客户端注册多个重定向 URI,这样您就可以为每个域注册一个,并在授权请求的 redirect_uri 参数中为当前访问的域传递一个。您不需要在您的域中使用相同的重定向 URI,这样应该可以解决您的状态/令牌恢复问题。

    【讨论】:

    • 我们尝试过使用几个redirect_uris,但是我们遇到了一个问题,即身份验证弹出窗口并不总是关闭.. 所以我们选择弹出我们自己的弹出窗口,保存那里的令牌,将其发送到服务器,然后返回给客户端,以便将其用于下一次调用..
    • 我认为那将是一个不同的问题,尝试调试为什么弹出窗口并不总是关闭。在任何情况下,我都建议不要使用弹出窗口,而是使用完整的浏览器重定向,因为这是推荐的外部登录方法和最佳实践。
    • 真的吗?据我们在其他网站上看到,他们使用谷歌身份验证弹出窗口并在登录后关闭它..(检查 pinterest)
    • Popup 使用户更难识别 IDP 页面的合法性,并且 IDP 更难提供通用且显示良好的登录页面; Google 仅允许通过显式异常通过弹出窗口登录,因为他们使用 X-Frame-Options 进行帧破坏。
    • 我认为我的方向应该集中在 HTTPS 和 HTTP 链接上......这可能是那里的问题
    猜你喜欢
    • 2012-05-29
    • 1970-01-01
    • 2012-11-08
    • 2014-12-24
    • 1970-01-01
    • 2014-01-11
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多