我一直在关注基本的OAuth 2.0 tutorial来创建OAuth 2.0服务器。整个部分工作正常,但是当我尝试在this页面后的Google OAuth2游乐场中使用它时,我遇到了一些错误。
我已按照上述链接中的所有步骤进行操作,但我使用http://localhost/wordpress/authorize.php?state=xyz
作为我的授权终结点,否则我会收到一条错误消息,指出状态是必需的,我没有想要编辑任何代码。
现在,通过授权API,一切似乎都能正常工作。我已定向到我的localhost网站,当我授权请求时,我将返回OAuth2 Playground。当我继续下一步并尝试交换返回的授权代码时,我收到了400错误。
整个请求/响应如下:
POST /wordpress/token.php HTTP/1.1
Host: localhost
Content-length: 191
content-type: application/x-www-form-urlencoded
user-agent: google-oauth-playground
code=6d408c28d468db6586320bff3aacf16492489b67&redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground&client_id=newclient&scope=& client_secret=newpass&grant_type=authorization_code
______________________________________________________________________
HTTP/1.1 400 Bad Request
Content-length: 106
Content-type: text/plain
An error occured while connecting to the server: Unable to fetch URL: http://localhost/wordpress/token.php
这可能是我在我结束时犯下的一个简单错误,但我似乎无法弄明白。我不认为代码确实是一个问题,因为当我在教程页面上进行测试时,一切正常。我还没有编辑示例使用的库中的任何文件。如果需要,我可以编辑此帖子以包含代码,以符合链接可能变为非活动状态的规则。
我注意到有关请求的一点是&scope=&client_secret=newpass&grant_type=authorization_code
。看起来没有范围参数设置,我认为这可能会弄乱结果。
如果有任何人对OAuth或OAuth2 Playground有任何经验并且可以帮助我找出出错的地方,我将非常感激。此外,我为长期问题道歉,但我希望尽可能多地提供信息。
答案 0 :(得分:0)
这种情况正在发生,因为您在不可访问的网络(例如localhost)上托管OAuth服务器。基本上,当oauth playground尝试使用自己的服务器(不在网页上使用XHR)交换令牌代码时,该服务器无法使用URL http://localhost...
访问您的机器。
要在游乐场进行测试,您需要使用公共URL或IP地址访问OAuth 2.0服务器。您可以做的是将本地服务公开给外部/互联网。为此,您可以使用ngrok或localtunnel等服务,并获得本地服务的公开网址,您可以使用该网址设置Playground。