Google云端控制台:无效的重定向URI

时间:2013-10-23 13:48:17

标签: oauth google-api

我现在正在处理的任务是设置谷歌授权以访问我的组织的资源。

但这项任务存在问题。我的组织为其本地网络使用非标准域:domain.off。当我尝试在Google云端控制台(http://dev.domain.off:12345/auth/google/callback.html)中将“https://cloud.google.com/console”设置为oauth2回调时,我收到“无效的重定向URI”错误。

我无法使用具有正确互联网域名的直接地址,因为在我的组织的私人开发领域中有许多其他服务我必须使用与不同地址的冲突。

我不能将具有直接地址的生产环境用于开发目的。开发环境只有私有地址domain.off。

我无法修改漏洞开发环境以将所有私有开发地址更改为public。这不是我的职责。

我的问题有解决办法吗? 我现在看到的唯一解决方案是要求Google开发人员删除或修改oauth回调设置表单中的URI验证程序,以接受非标准域。

3 个答案:

答案 0 :(得分:3)

您可能想要的是使用其中一种替代Oauth工作流程。

如果你想要的只是使用你服务中的谷歌云,请按照此处的说明寻找服务帐户:https://developers.google.com/console/help/new/#generatingoauth2我在teowaki.com工作,与google bigquery进行交互,它可以无缝运行。您只需在云控制台上生成密钥并将密钥放在服务器上即可。

如果您需要识别用户,那么您可以查看已安装的应用程序的OAuth,如下所示https://developers.google.com/console/help/new/#generatingoauth2

在这种情况下,您可以选择要转到URL的用户,在这些URL中,用户需要将其粘贴到应用程序中,或者重定向到localhost中的URL。由于我假设您正在进行Web应用,因此您应该选择第一个选项并向用户显示他们需要粘贴的令牌。它可能不是有史以来最好的用户体验,但作为一个内部应用程序它可能是可行的。

答案 1 :(得分:1)

因为您无法使用具有正确互联网域名的直接地址

你可以尝试这样的事情

您可以使用“州”查询参数创建主子域以获取所有Google身份验证响应并重定向到更正子域。

例如,创建google.mydomain.com并将其用作有效的“重定向URI”,Apache会将此网址重定向到具有重定向(或重写)功能的每个用户。

有关apache重定向的详细信息,请参阅 http://www.simonecarletti.com/blog/2009/01/apache-query-string-redirects/

这里是代码:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^google\.
RewriteCond %{QUERY_STRING} state=([a-z0-9]+)
RewriteRule ^(.*)$ http://%1.mydomain.com/$1 [L]

答案 2 :(得分:1)

是否有可能您同意并重定向到您控制的某个公共域(使用access_type = offline)?

当Google回拍授权代码时,请不要在公共域中使用它,将其与http webhook或其他内容一起传递给具有约束的私有域,然后从私有域进行交换。然后,这允许您以不同的方式使用域和回调URL。请注意,使用sdk脚本设置的redirect_url也必须与您在控制台上设置的相同,而与实际调用交换的服务器无关,并完成令牌获取。

我不确定我是否遗漏了你的任何约束,但也许这会有所帮助。