Google Drive API,带有iframe的预览文件

时间:2019-02-07 18:07:27

标签: php google-api google-drive-api google-oauth google-api-php-client

我需要预览我的google驱动器文件,是我的存档,但是是私有的,但是我不想登录我的帐户来预览文件,如何使用Oauth身份验证来预览文件?我可以做到。我尝试生成webContentLink,但也需要登录,谢谢

    $url_array = explode('?', 'My url permited');
    $url = $url_array[0];
    $client = new Google_Client();
    $client->setClientId('My client ID');
    $client->setClientSecret('My client secret');
    $client->setRedirectUri($url);
    $client->setScopes(array('https://www.googleapis.com/auth/drive'));
    $client->setAccessType('offline');
    $client->setState('offline');
    $client->refreshToken('My refresh token with Oauth playground');
    $service = new Google_Service_Drive($client);

并且在与API连接后,我将文件上传到Google驱动器

        $content = file_get_contents($_FILES["file"]["tmp_name"]);//pega o conteudo do arquivo
    $file = $service->files->create($fileMetadata, array(//função para inserir aonde tem 2 parametros,metadados e  conteudo/tipo e etc do arquivo
        'data' => $content,
        'mimeType' => 'application/octet-stream',
        'uploadType' => 'multipart',
        'fields' => 'id,webViewLink,webContentLink,thumbnailLink'));
    printf("File ID: %s\n", $file->id);

我需要将此webViewLink放入iframe中,但是当我输入webViewLink时却没有请求登录

1 个答案:

答案 0 :(得分:0)

让我们考虑私人用户数据。用户拥有的数据,例如您上传到google驱动器帐户的文件。可以看到这些文件的唯一一个是可以访问这些文件的用户。我不能转到您的云端硬盘帐户并访问您的个人数据。

Oauth2为我们提供了一种方法,可以授予应用程序(客户端)对我们个人数据的访问权限。当您要使用应用程序时,请登录到您的Google帐户,并提示您同意屏幕,以授予该应用程序对您的数据的访问权限。如果应用程序(客户端)请求脱机访问,则将为他们提供刷新令牌,可以随时使用该刷新令牌来请求访问令牌以访问您的数据。这样,应用程序就可以像您一样向google进行身份验证。没有刷新令牌,您的代码将提示用户请求访问其数据的权限,有了它,应用程序无需再次提示,因为您已经授予了它。

使用访问令牌,该应用程序将能够访问Google Drive API和您存储的数据。这与Google Drive Web应用程序无关。

访问私人用户数据

webViewLink仅在拥有网络链接的相关用户已被授予对该文件的访问权限或该文件是公共文件时才有效。如果尚未登录,系统将提示他们登录,因此请确保已与用户一起确认文件。

记住Oauth用于授予您的应用程序对用户数据的访问权限。您可以通过api访问该数据。除非您创建自己的预览文件应用程序,否则您不能以编程方式预览文件。您将无法预览Google Drive Web应用程序中的文件。用户需要使用自己的帐户登录到该应用程序才能在google drive网络应用程序上查看文件。

当前登录用户

请运行以下语句,它将向您显示当前以您的身份登录的用户。

$service->about->GetAbout(array('fields' => '*'));

您必须先登录才能使用刷新令牌登录。