为什么Google Oauth在我的Rails应用程序中返回`invalid redirect_urI`?
我将Google Oauth2添加到Rails应用程序中,但是一直未能超越早期阶段。
我已经build立了一个应用程序,并定义了客户端ID和密码。但是我得到Invalid parameter value for redirect_uri: Non-public domains not allowed: http://localhost/path/to/callback
这是什么意思? 这是因为我在本地开发环境中testing?
感谢您的任何想法。
编辑
这可能是因为应用程序的URI与发送URI不同。 但是,当我去Google,并尝试授权我的开发应用程序的path,我得到的OAuth2 redirect is invalid
。 这是使用本地托pipe的应用程序的限制吗?
编辑2
我正在生成的请求如下所示:
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=###########&redirect_uri=http%3A%2F%2Fmyapp.dev%2Fusers%2Fauth%2Fgoogle_oauth2%2Fcallback&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile&approval_prompt=&access_type=offline
它是否正确。 我已经试过这与client_id包括和不包括.apps.googleusercontent.com
部分。 两者似乎都不起作用。
我得到了在Ubuntu上运行我的Python /龙卷风应用程序的redirect错误。 使用本地主机没有工作,因为接受的答案突出显示。 Google需要一个公共领域。
我的解决scheme是搭载“example.com”这是公共的,并在我的/ etc / hosts文件中创build一个子域。 子域名可以在我的本地开发框中运行,Google会对example.com域名感到满意。 我通过谷歌控制台注册redirect,redirect为我成功工作。
我将以下内容添加到我的/ etc / hosts中:
192.168.33.100 devbox devbox.example.com
在我的情况下,IP是我的机器。 我也可以用127.0.0.1来代替。
我的Google API控制台( https://code.google.com/apis/console )设置了新的客户端ID:
- “应用程序types:Web应用程序”。
- 通过“您的网站或主机名(更多选项)”:
- 在“授权redirectURI”中,我input了http://devbox.example.com/
- 在“授权的JavaScript起源”中,我input了http://devbox.example.com/
使用xip.io,你可以提供一个公共的URLredirect到像http://your_pow_app.192.168.0.1.xip.io/user/auth/google_oauth2/callback
testing和工作。
我用我的公共主机名。 如果你有一个静态的IP地址,这将有所帮助。 我用http://www.displaymyhostname.com/来获取我的主机名。; 当我创build新的Web应用程序客户端ID时,我将其直接插入“ 授权的JavaScript起源”字段。
PS我的主机名看起来像这样:111.111.111.111.static.exetel.com.au
这是我对相关问题的回答https://stackoverflow.com/a/23517146/1320083
对于其他人的发现,我的问题是几件事情的结合。
-
我无法获得callback在本地机器上工作。 控制台API控制台表明这是可能的,但我无法得到它的工作。 不知道这是服务,还是我的networking/连接/防火墙/等
-
在API控制台中,您必须指定完整的redirectURI,而不仅仅是指向您的应用的根url。
-
Google在此列出范围参数https://developers.google.com/gdata/faq#AuthScopes 。 看起来这个信息已经过时了,而正确的格式现在是https://www.googleapis.com/auth/plus.me,https://www.googleapis.com/auth/youtube等。也许别人可以证实这一点?;
我还有其他一些事情正在进行。 我在这里写了关于我的另一个问题的完整解释。 不幸的是我的评论被删除,而不是由版主移动,因为我张贴在错误的地方。 我现在不记得我写的所有东西。 对于其他面临类似问题的人,可以随意发表评论,也可以慢慢记忆,这样我就可以提供一些想法。
错误redirect_uri_mismatch – 当您在Google Developers Console项目中input与您的应用程序捆绑包ID不匹配的错误捆绑包ID时,可能会发生此错误。 检查您的客户端ID和包ID是否与Developers Console中显示的值匹配。
对我来说,这是build立谷歌url的function。 我在string中插入换行符,一旦我删除了换行符,url再次运行。
我面临这个问题,但发现这确实不是一个问题。 正如我的博客中所解释的,即使您在本地主机开发机器上工作,也可以使用公共redirectURI。 Google只会将授权码返回到公共URI,您可以将其剪切并粘贴到本地机器。