HWIOAuthBundle 用于 web 应用的 Google 登录 device_id 和 device_name

Posted

技术标签:

【中文标题】HWIOAuthBundle 用于 web 应用的 Google 登录 device_id 和 device_name【英文标题】:HWIOAuthBundle Google login device_id and device_name for a webapp 【发布时间】:2014-05-03 12:33:06 【问题描述】:

我正在开发一个 Symfony2 应用程序。我正在使用 FOSUserBundle 处理身份验证,最近使用本教程将其与 FOSUserBundle 集成:https://gist.github.com/danvbe/4476697。

问题是: 我可以在 localhost 上使用 google api 登录,一切正常。

但是,当我尝试登录真实服务器时,我得到:

Error: invalid_request

device_id and device_name are required for private IP: http://<server_ip>/login/check-google

请求详情:

response_type=code
scope=https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile
redirect_uri=http://<server_ip>/login/check-google
client_id=<my_id>

Google 文档没有提到这两个参数。我尝试手动发送一个请求,其中 device_id 为 UUID,device_name 设置为“notes”。我这次得到的回应是:

Error: invalid_request

Device info can be set only for native apps.

请求详情:

cookie_policy_enforce=false
response_type=code
device_name=notes
scope=https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile
redirect_uri=http://<server_ip>/login/check-google
device_id=4b3403665fea6
client_id=<my_id>

现在,我做错了什么?

【问题讨论】:

除了 localhost,您的 clientID 是否包括您的服务器(按 IP 地址)? cloud.google.com/console 【参考方案1】:

在进行 Oauth 或 API 调用时,Google 不会接受本地(私有)IP 地址。我的解决方法是在我的 Windows 主机文件中为本地 IP 添加一个条目:

\Windows\System32\drivers\etc

192.168.1.2   fakedomain.com

然后在他们的开发控制台中向 Google 注册它。这对他们来说似乎是一个“真实”域,但仍会在您的浏览器或代码中解析为本地 IP。我确信在 Mac 或 Linux 上也可以使用类似的方法。

【讨论】:

这不会有安全隐患吗?为什么谷歌首先需要一个域? 显然,他们现在已经修好了。【参考方案2】:

看起来您确实使用了错误的 oauth 风格。 device_id 与Devices 一起使用。我真的希望您使用WebServer 流程。您可能需要其他流程之一,因为我在这里看不到足够的细节来判断,但它们都可以在链接中找到。

【讨论】:

顺便说一句 - 可以找到 php 的客户端库 code.google.com/p/google-api-php-client/wiki/OAuth2

以上是关于HWIOAuthBundle 用于 web 应用的 Google 登录 device_id 和 device_name的主要内容,如果未能解决你的问题,请参考以下文章

hwi oauth bundle 和 Symfony 4.2:无法安装

用于移动设备的基于 Web 的位置跟踪应用程序

用于 Web 应用程序的 iCloud

将 libspotify 用于基于 Web 的应用程序

用于 Web 应用程序 + 桌面应用程序的相同数据库

用于Web应用的桌面管理面板