HWIOAuthBundle用于webapp的Google登录device_id和device_name

时间:2014-03-25 15:03:21

标签: symfony google-oauth fosuserbundle hwioauthbundle

我正在开发一个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设置为&#34; notes&#34;。我这次得到的回应是:

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>

现在,我做错了什么?

2 个答案:

答案 0 :(得分:4)

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

\Windows\System32\drivers\etc

192.168.1.2   fakedomain.com

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

答案 1 :(得分:1)

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