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:
and I get this in the app:
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?