我想编写一个函数,我可以通过在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请求需要一个内容长度标题。这就是我们所知道的。”但是,我已经将内容长度放在帖子字段和标题中,所以我认为问题可能是其他问题。
答案 0 :(得分:1)
这篇文章可能有助How do I authorise an app (web or installed) without user intervention? (canonical ?),特别是对https://developers.google.com/identity/protocols/OAuth2WebServer#offline
的引用答案 1 :(得分:0)