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

Oauth Google云控制台:无效的重定向URI,oauth,google-api,Oauth,Google Api,我现在的任务是设置谷歌授权来访问我所在组织的资源 但这项任务有一个问题。我的组织将非标准域用于其本地网络:domain.off。当我试图在Google云控制台()中将“”设置为oauth2回调时,我得到了“Invalid redirect URI”错误 我不能将直接地址与正确的internet域一起使用,因为在我的组织的私有开发域中有许多其他服务,我必须使用不同地址的冲突 我不能将直接地址的生产环境用于开发目的。开发环境只有私有地址domain.off 我无法修改hole开发环境以将所有私有开发

我现在的任务是设置谷歌授权来访问我所在组织的资源

但这项任务有一个问题。我的组织将非标准域用于其本地网络:domain.off。当我试图在Google云控制台()中将“”设置为oauth2回调时,我得到了“Invalid redirect URI”错误

我不能将直接地址与正确的internet域一起使用,因为在我的组织的私有开发域中有许多其他服务,我必须使用不同地址的冲突

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

我无法修改hole开发环境以将所有私有开发地址更改为公共地址。这不是我能胜任的任务

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

因为您无法将直接地址用于正确的internet域

你可以试试这样的

您可以创建一个主子域来获取所有google auth响应,并使用“state”查询参数重定向到正确的子域

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

有关apache重定向的详细信息,请参阅

代码如下:

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

您是否可能同意并重定向到您控制的某个公共域(使用access\u type=offline)

当Google回击身份验证代码时,不要从公共域使用它,使用http webhook或其他东西将其传递给具有约束的私有域,然后从私有域进行交换。然后,这允许您以不同的方式使用域和回调url。请注意,使用sdk脚本设置的重定向url也必须与您在控制台上设置的相同,与您实际调用exchange并完成令牌获取的服务器无关


我不确定是否遗漏了您的任何约束,但这可能会有所帮助。

您可能想要的是使用另一种Oauth工作流

如果你只想从你的服务中使用谷歌云,那么你可以像这里解释的那样申请一个服务帐户:我在teowaki.com上有一个与google bigquery交互的服务帐户,它可以无缝工作。您所需要的只是在云控制台上生成一个密钥,并将该密钥放在服务器上

如果您需要识别用户,那么您可以为安装的应用程序使用OAuth,如下所示


在这种情况下,您可以选择在用户转到一个URL(在该URL中,他们将获得一个他们需要粘贴回您的应用程序的令牌)或被重定向到localhost中的URL之间进行选择。因为我假设您正在做一个webapp,所以您应该选择第一个选项,并向用户提供他们需要粘贴的令牌。它可能不是最好的用户体验,但作为一个内部应用程序,它可能是可行的。

我对谷歌云一无所知。就是这个主意。也许你可以使用一个有效的url,然后使用apache和代理指令(如proxypass和proxypassreverse)来处理请求。这有什么帮助吗?2 u:我授予你奖金是因为你给出了唯一不需要公共域的选项,这显然是这个问题的主要问题。不幸的是,powder并不能真正帮助我的开发工作流程,因为我不希望在开发和生产中有不同的行为,但我很确定您回答了仅使用lan生产服务器的问题。谢谢:)您关于在开发/生产中有不同行为的说法是正确的。我认为这将是一个内部网应用程序,因此我向您提供了解决方案。您是对的,我刚刚添加了一条注释,说明粉末存在同样的问题,但该注释与赏金消息绑定,该消息现已消失