不能使用google drive api v3 php进行unauthentication下载文件

时间:2017-04-20 06:28:46

标签: php laravel curl google-drive-api

我在谷歌找到了很多资源,但我仍然无法解决它。 我的代码是相同的谷歌驱动器API下载图像,但它返回此 download file return metadata

这是我的代码下载

 public function download($id)
  {
    $this->initializeToken();
//    $token = \Session::get('token');
//    $this->client->setAccessToken($token);
//    dd($id);
    $response = $this->drive->files->get($id, [
        'alt' => 'media'
    ]);
    $content = $response->getBody()->getContents();


    file_put_contents("blogxxx.png", $data);


  }

它返回上面的图像。 我试着卷曲。

 public function download($id)
  {
    $this->initializeToken();
    $response = $this->drive->files->get($id, [
        'alt' => 'media'
    ]);
    $content = $response->getBody()->getContents();

    $oAuthToken = $token['access_token'];
    $getUrl = 'https://www.googleapis.com/drive/v2/files/' . $id . '?alt=media';
    $authHeader = 'Authorization: Bearer ' . $oAuthToken ;

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $getUrl);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        $authHeader ,
    ]);
    $data = curl_exec($ch);
//    dd($data);

    curl_close($ch);

    file_put_contents("blogxxx.png", $data);
  }

但我仍然会返回相同的结果。

我可以解决它约3天:(感谢任何帮助我。

解决 虽然没有人帮助我,但我仍然用非常简单的解决方案来解决它。 您只需添加响应标头并回显下面的$ content:

header('Content-Type: application/octet-stream');
    header("Content-Transfer-Encoding: Binary");
    header("Content-disposition: attachment; filename=\"123.png\"");
    echo $content;
3天后它对我有用。是啊:)

0 个答案:

没有答案