上传文件到谷歌驱动器问题PHP


Upload file to google drive issue PHP

我在将文件上传到Google Drive时遇到问题,无法上传文件。任何人都可以帮忙,请回答。

以下是我上传文件时遇到的错误:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "authError",
    "message": "Invalid Credentials",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Invalid Credentials"
 }
}

我已经向驱动器SDK注册了该应用程序,我正在使用驱动器SDK客户端ID。此外,我每次都使用保存在DB中的长期刷新令牌中更新的访问令牌。

代码在这里:

$fname = basename($updfile); // where $updfile is the file name with path
$turl = "https://www.googleapis.com/drive/v1/files";
$jsondata = '
{
    "title": "'.$fname.'",
    "mimeType":"application/zip",
    "description":"The mailchimp data export to google drive."
}';
$headers = 'Host: www.googleapis.com'."'r'n";
$headers .= 'Authorization: Bearer '.$access_token."'r'n";  // $access_token is token generating everytime from refresh token
$headers .= 'Content-Type: application/json'."'r'n";
$headers .='Content-Length: '.strlen($jsondata)."'r'n";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $turl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsondata);
curl_setopt($ch, CURLOPT_HTTPHEADER, array($headers));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);

如果有人对此有解决方案或建议,请回复/回答。提前感谢。

我建议使用PHP客户端库,并在文档中查看如何将文件上传到Google Drive:的PHP片段

https://developers.google.com/drive/v2/reference/files/insert

如果出于任何原因,您希望继续使用php_curl并手动构建HTTP请求,则应尝试使用OAuth 2.0 Playground发送相同的请求,并将其与您的请求进行比较。

为什么不尝试在rest客户端中使用访问令牌,看看问题是来自PHP代码还是访问令牌。

Postman Rest Client for Chrome使用起来非常简单。

我认为你的url不正确:

$turl="https://www.googleapis.com/drive/v1/files";

应该是:

$turl="https://www.googleapis.com/upload/drive/v1/files";

以下是关于使用v2上传功能的文档(尽管很瘦)。它可能比使用v1有用,也可能不有用:)

https://developers.google.com/drive/manage-uploads