4
我知道这已被问过,但在其他职位的建议并没有帮助。 我成功收到来自google的授权令牌,但是当我尝试获取访问令牌时,我收到了一个invalid_request。谷歌API - 从Oauth2请求令牌返回“invalid_request”
我们在PHP中的第一次尝试导致了这种反应,当我通过HTTP客户端尝试时,我得到了同样的结果。最后,我用CURL直接试过,仍然得到了相同的结果:
curl -v -k --header "Content-Type: application/x-www-form-urlencoded" \
-F 'code=4/U2su0fwiynq4v8J8xD56ohfF0fX6.EhP0brx3cosbuJJVnL49Cc8EFE7ncQI' \
-F 'client_id=-abcdefghijklmnopqrstuvwxyz.apps.googleusercontent.com' \
-F 'client_secret=ABC123ABC123ABC123ABC123' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri=https://app.myserver.com/googleLogin.php' \
https://accounts.google.com/o/oauth2/token
我得到的回应是:
> https://accounts.google.com/o/oauth2/token
* About to connect() to accounts.google.com port 443 (#0)
* Trying 173.194.77.84... connected
* Connected to accounts.google.com (173.194.77.84) port 443 (#0)
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using RC4-SHA
* Server certificate:
* subject: C=US; ST=California; L=Mountain View; O=Google Inc; CN=accounts.google.com
* start date: 2011-07-21 00:00:00 GMT
* expire date: 2013-07-18 23:59:59 GMT
* common name: accounts.google.com (matched)
* issuer: C=ZA; O=Thawte Consulting (Pty) Ltd.; CN=Thawte SGC CA
* SSL certificate verify ok.
> POST /o/oauth2/token HTTP/1.1
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
> Host: accounts.google.com
> Accept: */*
> Content-Length: 771
> Expect: 100-continue
> Content-Type: application/x-www-form-urlencoded; boundary=----------------------------0d3dc3507a7f
>
* Done waiting for 100-continue
< HTTP/1.1 400 Bad Request
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: Fri, 01 Jan 1990 00:00:00 GMT
< Date: Sat, 04 Aug 2012 22:07:07 GMT
< Content-Type: application/json
< X-Content-Type-Options: nosniff
< X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 1; mode=block
< Server: GSE
< Transfer-Encoding: chunked
<
{
"error" : "invalid_request"
* Connection #0 to host accounts.google.com left intact
* Closing connection #0
* SSLv3, TLS alert, Client hello (1):
我不是URL编码任何东西之前我送它,但是当我做,我得到相同的结果。
任何帮助,非常感谢!
感谢克劳迪奥 - 但我看不出有什么差别。该应用程序确认参数必须是网址编码的(如我所想),并且我要发送的有效负载中的所有内容*都是*编码的。我看到的唯一区别是,我的client_id比Google更长,格式也不同,我看到的其他许多示例(Google的:407408718192.apps.googleusercontent.com) – rhuff 2012-08-05 04:19:37
知道了!在我对授权代码的请求中,我的'approval_prompt'被设置为'auto' - 谷歌将他们设置为'force'。我改变了我的武力,它的工作。 感谢您的正确方向的提示! – rhuff 2012-08-05 04:39:00
这并没有帮助我,我仍然有同样的错误。无效的请求。 – Michael 2013-12-15 16:36:59