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的主要内容,如果未能解决你的问题,请参考以下文章