微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MacOS 上 Edge 中的 Google Drive Picker Giver 错误

如何解决MacOS 上 Edge 中的 Google Drive Picker Giver 错误

我在 Angular 11 应用中使用 Google Drive File Picker。我正在使用 https://localhost 使用所有浏览器的最新发布版本在 MacOS 上运行。它适用于 Chrome、Firefox 和 Safari,但在 Edge 中,当我尝试打开选择器时,控制台中出现以下错误

enter image description here

我在应用程序中得到了这个:

enter image description here

Edge 在 MacOS 上的安装很干净,我没有摆弄任何设置。

我正在使用 Angular 服务打开文件选择器,它看起来像这样:

    // this service is based on based on https://stackoverflow.com/questions/51522954/angular-6-google-picker-api-popup
import { Injectable } from '@angular/core';

declare const gapi: any;
declare const google: any;

@Injectable({
    providedIn: 'root'
})
export class GoogleDriveService {

    constructor() { }

    // clientId and apiKey from GCP credentials page
    private clientId = '***';
    private apiKey = '***';
    // appId = project number from developers.google.com. See "Project number" under "IAM & Admin" > "Settings"
    private appId = '***';
    private scope = 'https://www.googleapis.com/auth/drive.file';

    private oauthAccesstoken = null;
    private pickerApiLoaded = false;
    private pickerCallback = null;

    public open(callback): void {
        this.pickerCallback = callback;
        gapi.load('auth',{ 'callback': this.onAuthApiLoad.bind(this) });
        gapi.load('picker',{ 'callback': this.onPickerApiLoad.bind(this) });
    }

    private onAuthApiLoad(): void {
        gapi.auth.authorize({
            'client_id': this.clientId,'scope': this.scope,'immediate': false,},this.handleAuthResult.bind(this));
    }

    private onPickerApiLoad(): void {
        this.pickerApiLoaded = true;
        this.createPicker();
    }

    private handleAuthResult(authResult): void {
        if (authResult && !authResult.error) {
            this.oauthAccesstoken = authResult.access_token;
            this.createPicker();
        } else {
            console.warn('authResult',authResult);
        }
    }

    private createPicker(): void {
        if (this.pickerApiLoaded && this.oauthAccesstoken) {
            const view = new google.picker.View(google.picker.ViewId.DOCS);
            
            // this code can be used to display folders (but unfortunately not in a folder tree)
            // const docsView = new google.picker.DocsView()
            //     .setIncludeFolders(true)
            //     .setMimeTypes('application/vnd.google-apps.folder,application/pdf')
            //     .setSelectFolderEnabled(true);

            const picker = new google.picker.PickerBuilder()
                .enableFeature(google.picker.Feature.NAV_HIDDEN)
                .enableFeature(google.picker.Feature.MULTISELECT_ENABLED)
                .setAppId(this.appId)
                .setoAuthToken(this.oauthAccesstoken)
                .addView(view)
                // .addView(docsView)
                .addView(new google.picker.DocsuploadView())
                .setDeveloperKey(this.apiKey)
                .setCallback(this.pickerCallback)
                .build();
            picker.setVisible(true);
        }
    }
}

知道为什么这在 Edge 中不起作用吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?