我已经看过这个页面和很多其他页面,但都提出了不适合我的解决方案。我有与我提供的链接相同的问题。
我正在尝试使用Google+ API功能,因此用户可以使用Google帐户登录我的页面。
当我redirect_uri本地主机时:
$client->setRedirectUri("https://localhost/...");
一切都奏效了。但后来我把它改成了本地 ip 192.168.1.10 并得到错误(在 url 上 https://accounts.google.com/o/oauth2/auth?response_type=code&redirect_uri=https%3A%2F%2F192.168.1.10......
- 这是一个错误。
错误:invalid_request
私有 IP 需要device_id和device_name:
我不知道我该怎么办。我使用 PHP 服务器包装器。我无法更改等/主机,因为我也在移动设备(Android,IPAD)上尝试我的代码。因此,本地IP是必要的,以便在移动设备上对其进行测试。我想避免在某些真实服务器上设置测试页面,因为在 localhost 上测试网页是最快的方法,当仍在开发页面时。
如果您无法更改某些设备的主机文件,我想最好的选择是使用本地DNS服务器来伪造域,就像您在/etc/hosts中对条目所做的那样。这个答案应该可以帮助你:
https://unix.stackexchange.com/a/64944
如果将设备设置为使用计算机作为名称服务器,则应该可以欺骗域并使用此域来测试 oauth2 身份验证。
以下是有关此错误的详细信息:http://developers.blog.box.com/2012/12/19/going-beyond-oauth2-byod-in-the-enterprise/
规格中也提到了device_id和devive_name:https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-31#section-3.2.1
执行 Oauth 或 API 调用时不接受本地(私有)IP 地址。相反,您可以在 Windows 主机文件中为本地 IP 添加一个条目:WindowsSystem32driversetc
192.168.1.10 fakedomain.com
然后使用 fakedomain.com
在谷歌中回调 URI,而不是您的本地 IP 地址。
最后用http://fakedomain.com
浏览服务