我正在开发一个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>
现在,我做错了什么?
答案 0 :(得分:4)
Google在进行Oauth或API调用时不会接受本地(私有)IP地址。我的解决方法是在我的Windows主机文件中为本地IP添加一个条目:
\Windows\System32\drivers\etc
192.168.1.2 fakedomain.com
然后在他们的开发控制台中将其注册到Google。这对他们来说似乎是一个“真正的”域,但仍会在您的浏览器或代码中解析为本地IP。我确信在Mac或Linux上采用类似的方法也可以。
答案 1 :(得分:1)