【发布时间】:2012-06-11 13:04:27
【问题描述】:
我正在使用 curl 为谷歌帐户使用以下发布方法,但它给了我 invalid_request 错误。
POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded
code=4/ux5gNj-_mIu4DOD_gNZdjX9EtOFf&
client_id=1084945748469-eg34imk572gdhu83gj5p0an9fut6urp5.apps.googleusercontent.com&
client_secret=CENSORED&
redirect_uri=http://localhost/oauth2callback&
grant_type=authorization_code
这是我的带有 curl 的 PHP 代码
$text ='test';
$URL = "https://accounts.google.com/o/oauth2/token";
$header = array(
"POST /o/oauth2/token HTTP/1.1",
"Host: accounts.google.com",
"Content-type: application/atom+xml;charset=\"utf-8\"",
"Accept: text/xml",
"Cache-Control: no-cache",
"code=[my_code]&client_id=[my_client_id]&client_secret=[my_client_secret]& redirect_uri=http://localhost/curl_resp.php&grant_type=authorization_code",
"Content-length: ".strlen($text),
);
$xml_do = curl_init();
curl_setopt($xml_do, CURLOPT_URL, $URL);
curl_setopt($xml_do, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($xml_do, CURLOPT_TIMEOUT, 10);
curl_setopt($xml_do, CURLOPT_RETURNTRANSFER, true);
curl_setopt($xml_do, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($xml_do, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($xml_do, CURLOPT_POST, false);
curl_setopt($xml_do, CURLOPT_POSTFIELDS, $text);
curl_setopt($xml_do, CURLOPT_HTTPHEADER, $header);
我遇到了无效请求错误
【问题讨论】:
-
在您发送到服务器的数据中,POST 正文中
&字符后面的那些新行是否存在?因为他们不应该…… -
PHP 代码看起来并不完整,并不是说它难以阅读。编辑您的问题并将您的 PHP 作为代码块添加到那里。
-
我添加了
oauth和google-authentication标签。在我看来,这个问题并非专门针对 PHP、POST 方法或 cURL。在我看来,请求可以毫无问题地到达他们的服务器,但由于某种原因被他们的服务器拒绝。我发现了一个类似的帖子可能对您有所帮助:groups.google.com/group/HealthGraph/browse_thread/thread/…
标签: php post curl oauth google-api