0

I am using Google Drive File Picker in an Angular 11 app. I am running on MacOS using https://localhost using the newest released version of all browsers. It works for me on Chrome, Firefox and Safari, but in Edge I get the following error in the console when I try to open the picker:

enter image description here

and I get this in the app:

enter image description here

The installation of Edge on MacOS is clean, I haven't fiddled with any settings.

I am using an Angular service to open the file picker and it looks like this:

    // 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);
        }
    }
}

Any ideas why this does not work in Edge?

Jørgen Rasmussen
  • 1,143
  • 14
  • 31
  • What is the ‘ob’ in the error message? Have you tried to allow cookies in MS edge, you can try: Open Microsoft Edge, select Menu (3 dots icon on top right corner of the browser) > Settings > Site permissions > Cookies and site data >Turn on "Allow sites to save and read cookie data (recommended)" to unblock cookies – Xudong Peng Jun 24 '21 at 06:04
  • I have no idea what ob is. It is not from my code, so I assume it is from theGoogle Picker code. "Allow sites to save and read cookie data (recommended)" is turned on. – Jørgen Rasmussen Jun 24 '21 at 08:39
  • Based on the current results, I think it is related to cookies-related settings. Have you enabled blocking third-party cookies? If this is the case, try to turn it off. – Xudong Peng Jun 25 '21 at 06:15

0 Answers0