我有来自OAuth 2.0 Playground的刷新令牌,如何通过php curl获取访问令牌来访问gdrive?

时间:2016-09-06 03:25:54

标签: google-drive-api google-oauth

我想编写一个函数,我可以通过在php中使用curl从我的google驱动器上传,下载和删除文件。因此,我必须在上传任何文件之前获取访问令牌。我遇到的麻烦是我得到了我的刷新令牌,我确实启用了我的gdrive api,但我不知道CURLOPT_URL,CURLOPT_POSTFIELDS和CURL_HTTPHEADER应该是什么。下面的代码显示了我正在尝试做的事情:

<?php 
  $post = array("grant_type" => "refresh_token",
                "client_id" => "MYCLIENT",
                "client_secret" => "MYCLIENTSECRET",
                "refresh_token" => "MYREFRESHTOKEN",
                "Content-length" => "163");

  $header = array("Content-type" => "application/x-www-form-urlencoded",
                  "Content-length" => "163");

  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, "www.googleapis.com/oauth2/v4/token");
  curl_setopt($curl, CURLOPT_POST, true);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
  curl_setopt($curl, CURLOPT_POST, $post);

  $output = curl_exec($curl);
  curl_close($curl);

  print $output;

?>

它一直告诉我“411.那是一个错误.POST请求需要一个内容长度标题。这就是我们所知道的。”但是,我已经将内容长度放在帖子字段和标题中,所以我认为问题可能是其他问题。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

是。错误411表示您必须提供Content-Length HTTP标头。此错误没有响应正文。尝试从标题数组中删除Content-Length部分。

bundle.js

SO thread开始,cURL会自动添加它。所以你不需要发送它。