将文件上传到Google云端硬盘时出现问题,我无法上传文件。任何人都可以提供帮助,请回答。
以下是我在上传文件时遇到的错误:
{
"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);
如果有人对此有解决方案或建议,请回复/回复。 在此先感谢。
答案 0 :(得分:0)
我建议使用PHP client library并查看文档以获取显示如何将文件上传到Google云端硬盘的PHP代码段:
https://developers.google.com/drive/v2/reference/files/insert
如果由于任何原因您想继续使用php_curl并手动构建HTTP请求,您应该尝试使用OAuth 2.0 Playground发送相同的请求并将其与您的请求进行比较。
答案 1 :(得分:0)
为什么不尝试在休息客户端中使用您的访问令牌,以查看问题是来自您的PHP代码还是访问令牌。
Chrome的Postman Rest Client非常易于使用。
答案 2 :(得分:0)
我认为您的网址不正确:
$ turl =“https://www.googleapis.com/drive/v1/files”;
应该是:
$ turl =“https://www.googleapis.com/upload
/drive/v1/files”;
以下是使用v2上传功能的文档(尽可能薄)。它可能比使用v1更有用,也可能没用:)