如何解决MacOS 上 Edge 中的 Google Drive Picker Giver 错误
我在 Angular 11 应用中使用 Google Drive File Picker。我正在使用 https://localhost 使用所有浏览器的最新发布版本在 MacOS 上运行。它适用于 Chrome、Firefox 和 Safari,但在 Edge 中,当我尝试打开选择器时,控制台中出现以下错误:
我在应用程序中得到了这个:
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 举报,一经查实,本站将立刻删除。