我有刷新令牌从OAuth 2.0操场,我怎么能得到访问令牌访问gdrive php curl



我想写一个函数,我可以上传,下载和删除文件从我的谷歌驱动器使用curl在php。因此,我必须在上传任何文件之前获得访问令牌。我所面临的麻烦是,我得到了我的刷新令牌,我确实启用了我的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请求需要一个内容长度的报头。这就是我们所知道的。"但是,我已经在post字段和header中设置了内容长度,所以我认为问题可能是其他的。

如何在没有用户干预的情况下授权应用程序(web或安装)?(规范的?),特别是对https://developers.google.com/identity/protocols/OAuth2WebServer#offline

的引用

是。错误411意味着您必须提供内容长度HTTP报头。此错误没有响应体。尝试从头部数组中删除Content-Length部分。

//remove following
$header[] = 'Content-Length: ' . $length;

从这个SO线程,cURL自动添加它。所以你不需要发送那个。

最新更新