【问题标题】:OneDrive FilePicker works with a personal account, but not with business accountOneDrive FilePicker 适用于个人帐户,但不适用于企业帐户
【发布时间】:2021-12-10 18:33:38
【问题描述】:

我有一个 Angular Web 应用程序,它打开 OneDrive FilePicker 并使用 Google Firebase 云功能将用户选择的文件传输到 Google 存储。如果我使用个人 OneDrive 帐户,它可以正常工作,但如果它是企业帐户,我会收到 CORS 错误并且文件不会传输。我的客户端代码如下所示:

oneDriveOptions = {
    clientId: '#####',
    action: 'download',
    multiSelect: true,
    advanced: {
        redirectUri: `${Utils.getBaseURL()}/one-drive-redirect`,
    },
    success: (files: any[]) => {
        this.zone.run(() => {
            this.oneDriveCallback(files);
        });
    },
    cancel: () => {
        this.zone.run(() => {
            this.dbService.indeterminateProgress = false;
        });
    },
    error: () => {
        this.zone.run((error) => {
            this.dbService.indeterminateProgress = false;
            console.error('OneDrive file picker error:', error);
        });
    },
};

async oneDriveClicked() {
    OneDrive.open(this.oneDriveOptions);
    this.dialogRef.close();
}

async oneDriveCallback(files: any) {
    try {
        this.dbService.indeterminateProgress = true;
        const cloudServiceFiles = this.convertOneDriveFiles(files.value);
        await this.dbService.addFromCloudService(this.data.dbData, files.accessToken, cloudServiceFiles, this.data.insertIdx, 'oneDrive');
        this.dbService.indeterminateProgress = false;
    } catch (error) {
        console.error(error.message);
        this.dbService.indeterminateProgress = false;
    }
}

在客户端:

const getOneDriveFile = async (cloudServiceFile: CloudServiceFile) => {
    const fileStream = oneDriveApi.items.download({
        accessToken: cloudServiceAuthToken,
        itemId: cloudServiceFile.id,
        // drive:,  default: 'me'. If it's set to be either 'user'/'drive'/'group'/'site', driveId has to be set to.
        // driveId: The id of the drive that was shared to us. Must be set if params.drive is set.
    });
    return fileStream;
};

我在控制台中得到的输出:

有什么建议为什么此代码适用于个人帐户但从企业帐户中出现 CORS 错误?

【问题讨论】:

    标签: onedrive


    【解决方案1】:

    这意味着您没有在 Microsoft 系统中注册您的应用程序,因此他们不允许您使用一个驱动器。 按照这些步骤,然后再次检查您的应用

    设置 要开始使用,您需要注册您的应用程序并从 Azure 应用注册页面接收应用 ID。

    要开始使用,您需要注册您的应用程序并从 Azure 应用注册页面接收应用 ID。

    1. 使用您的 Microsoft 帐户或工作或学校帐户登录到 Azure 应用注册页面。
    2. 点击添加应用并输入应用名称。
    3. 创建应用程序后,将其配置为支持 JavaScript 选择器:
    4. 单击“生成新密码”以创建应用程序密码。虽然这个值对于选取器不是必需的,但它必须已经创建。
    5. 单击添加平台,然后选择 Web。
    6. 输入将在您的网站上托管选择器的一个或多个 URL。托管选择器的每个页面都需要提供重定向 URL。
    7. 单击“保存”按钮保存更改。
    8. 复制应用程序的应用程序 ID,并在您提供的 JavaScript 选项对象中使用它来打开或保存文件。

    【讨论】:

    • 我已经这样做了,这使它可以与 OneDrive 文件选择器一起使用。但如果帐户是 OneDrive 业务,它仍然不起作用。我认为这与我还需要通过成为 MPN 会员来验证我的帐户有关。我试过了,但在法律信息中我没有通过就业验证。微软在这方面提供的唯一帮助是写信给支持,我已经这样做了,但从未收到答复。真的会得到一些帮助。
    • 这意味着您需要与 Microsoft 沟通,没有其他人可以帮助您。
    猜你喜欢
    • 2012-12-02
    • 2019-01-01
    • 1970-01-01
    • 2017-04-09
    • 2017-09-18
    • 2020-04-19
    • 2019-11-22
    • 1970-01-01
    • 2016-04-29
    相关资源
    最近更新 更多