【问题标题】:How to image thumbnail in google picker?如何在谷歌选择器中显示缩略图?
【发布时间】:2021-11-05 10:49:32
【问题描述】:

我正在使用谷歌选择器。

但在选取器视图中,图像缩略图未显示。但我想在预览中显示缩略图。 但我不能。我正在尝试这个:

这是我的代码:

<script type="text/javascript">

    var developerKey = "";
    var clientId = "";

    var scope = ['https://www.googleapis.com/auth/drive.file'];

    var pickerApiLoaded = false;
    var oauthToken;

    // Use the API Loader script to load google.picker and gapi.auth.
    function onApiLoad {
        gapi.load('auth', {'callback': onAuthApiLoad});
        gapi.load('picker', {'callback': onPickerApiLoad});
    });

    function onAuthApiLoad() {
        window.gapi.auth.authorize(
                {
                    'client_id': clientId,
                    'scope': scope,
                    'immediate': false
                },
                handleAuthResult);
    }

    function onPickerApiLoad() {
        pickerApiLoaded = true;
        createPicker();
    }

    function handleAuthResult(authResult) {
        if (authResult && !authResult.error) {
            oauthToken = authResult.access_token;
            createPicker();
        }
    }

    function createPicker() {
        if (pickerApiLoaded && oauthToken) {
            var view = new google.picker.DocsView().setParent('root').setIncludeFolders(true)
            var uploadView = new google.picker.DocsUploadView().setIncludeFolders(true);

            view.setMimeTypes('image/png,image/jpeg,image/jpg');
            uploadView.setMimeTypes('image/png,image/jpeg,image/jpg');

            var picker = new google.picker.PickerBuilder().
                    addView(view).
                    addView(uploadView).
                    setOAuthToken(oauthToken).
                    setDeveloperKey(developerKey).
                    setCallback(pickerCallback).
                    build();
            picker.setVisible(true);
            setTimeout(function () {
                $('.picker-dialog').css('z-index', 10002);
            }, 10);
        }
    }

    function pickerCallback(data) {
        if (data.action == google.picker.Action.PICKED) {
            var fileId = data.docs[0].id;
            alert('You select: ' + fileId);
        }
    }
</script>

选择器选择文件模式显示如下:

但我想要这样:

【问题讨论】:

  • 你的范围是什么?
  • @RafaGuillermo 好的,我会添加完整的代码。
  • 我认为这可能是由于您的范围。你能试试用drive.readonly代替drive.file吗?
  • 好的。它正在工作。我可以请添加一个答案吗?或者请您添加一个答案。

标签: javascript file-upload google-picker


【解决方案1】:

答案:

您需要使用drive.readonly 范围而不是drive.file

更多信息:

根据 OAuth 同意屏幕中的授权信息,drive.file 范围将允许您的应用程序:

  • 查看您使用此应用打开或公开共享的 Google 云端硬盘中的文件

  • 保存对您使用此应用打开的文件的更改

  • 使用此应用在 Google 云端硬盘中创建新文件

  • 查看您使用此应用打开的 Google 云端硬盘中的文件夹及其内容

  • 更改您使用此应用打开的文件夹及其内容

  • 删除您使用此应用打开的文件夹的内容

drive.readonly 范围允许您的应用程序:

  • 查看您的 Google 云端硬盘文件
  • 下载文件
  • 查看与您共享文件的人的姓名和电子邮件

这里的重要区别是drive.file 范围将您的应用程序限制为使用 创建的文件已使用应用程序打开。如果没有readonly 范围,则无法检索缩略图信息。

注意:显然,这确实会改变您的应用程序可以执行的操作范围,这将反映在向用户显示的 OAuth 同意屏幕中。

【讨论】:

  • 在列表视图中情况更糟——你会得到破碎的缩略图,这看起来不是很好。 drive.readonly 范围确实解决了这个问题,但由于它是一个受限范围,它需要应用验证和安全评估。如果选择器只显示一个通用图像图标,我会更喜欢。
猜你喜欢
  • 2017-08-15
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
  • 2017-03-20
  • 1970-01-01
  • 2020-01-20
  • 2023-04-09
  • 2020-12-09
相关资源
最近更新 更多