我正在尝试通过Gmail OAuth 2.0访问用户的邮件,并且正在通过Google的OAuth 2.0 Playground解决此问题
在这里,他们指定了我需要将其作为HTTP REQUEST发送:
POST /mail/feed/atom/ HTTP/1.1 Host: mail.google.com Content-length: 0 Content-type: application/json Authorization: OAuth SomeHugeOAuthaccess_tokenThatIReceivedAsAString
我尝试编写代码来发送此请求,如下所示:
$crl = curl_init(); $header[] = 'Content-length: 0 Content-type: application/json'; curl_setopt($crl, CURLOPT_HTTPHEADER, $header); curl_setopt($crl, CURLOPT_POST, true); curl_setopt($crl, CURLOPT_POSTFIELDS, urlencode($accesstoken)); $rest = curl_exec($crl); print_r($rest);
无法运作,请提供协助。:)
更新: 我接受了 杰森·麦克里 ( Jason McCreary )的建议,现在我的代码如下所示:
$crl = curl_init(); $headr = array(); $headr[] = 'Content-length: 0'; $headr[] = 'Content-type: application/json'; $headr[] = 'Authorization: OAuth '.$accesstoken; curl_setopt($crl, CURLOPT_HTTPHEADER,$headr); curl_setopt($crl, CURLOPT_POST,true); $rest = curl_exec($crl); curl_close($crl); print_r($rest);
但是我没有得到任何输出。我认为cURL在某处默默失败。请帮忙。:)
更新2: NomikOS 的把戏为我做到了。:) :) :) 谢谢!!
@ jason-mccreary是完全正确的。此外,我建议您使用此代码来获取更多故障信息:
$rest = curl_exec($crl); if ($rest === false) { // throw new Exception('Curl error: ' . curl_error($crl)); print_r('Curl error: ' . curl_error($crl)); } curl_close($crl); print_r($rest);
编辑1
要进行调试,您可以将其设置CURLOPT_HEADER为true以使用firebug :: net或类似工具检查HTTP响应。
CURLOPT_HEADER
curl_setopt($crl, CURLOPT_HEADER, true);
编辑2
关于Curl error: SSL certificate problem, verify that the CA cert is OK尝试添加这些标头(仅用于调试,在生产环境中,应将这些选项保留在中true):
Curl error: SSL certificate problem, verify that the CA cert is OK
true
curl_setopt($crl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($crl, CURLOPT_SSL_VERIFYPEER, false);