使用 react-native-google-drive-api-wrapper 将文件上传到 Google Drive 时出现 403

403 while uploading file to Google Drive using react-native-google-drive-api-wrapper

我正在尝试使用 react-native-google-drive-api-wrapper 上传文件。我在 firebase 控制台中创建了一个项目,并且能够 google 登录并能够请求访问 google 驱动器的权限。我已按照以下 link.

中提到的所有步骤进行操作

https://github.com/react-native-community/google-signin

在此项目的 googleSignin.configure 和 Google 云控制台中提到了以下范围。并在登录时获取询问上述范围的弹出窗口。如何解决此错误?即使我尝试创建一个文件夹,但对于任何 google 驱动器相关请求都是相同的 403。我应该在 firebase 控制台或 google 云控制台中进行任何其他配置吗?

        GoogleSignin.configure({
            scopes: ['https://www.googleapis.com/auth/drive',
                'https://www.googleapis.com/auth/drive.metadata',
                "https://www.googleapis.com/auth/drive.appfolder",], 
            shouldFetchBasicProfile: true,
            webClientId: 'My client id',
        });

下面是错误

{"_bodyBlob": {"_data": {"__collector": [Object], "blobId": "b86adcf1-c55a-4b08-8331-26475154af52", "offset": 0, "size": 962}}, "_bodyInit": {"_data": {"__collector": [Object], "blobId": "b86adcf1-c55a-4b08-8331-26475154af52", "offset": 0, "size": 962}}, "headers": {"map": {"alt-svc": "h3-29=\":443\"; ma=2592000,h3-27=\":443\"; ma=2592000,h3-25=\":443\"; ma=2592000,h3-T050=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"", "content-length": "962", "content-type": "application/json; charset=UTF-8", "date": "Thu, 02 Jul 2020 09:20:30 GMT", "server": "UploadServer", "vary": "Origin, X-Origin", "x-guploader-uploadid": "AAANsUkDhtWSnzNrl9JlD3Rj4Qz4Q5skrcdPX85Bmzg6i4mU3McC3xY7vhrJ-7OoSCHtDhfRrYnfo4N9RES7c77Faw"}}, "ok": false, "status": 403, "statusText": undefined, "type": "default", "url": "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart"}

我的代码在下面。我能够为 GDrive.isInitialized() 得到 true 并且我的所有参数都是正确的。

    GDrive.setAccessToken(token.accessToken);
    GDrive.init();
    GDrive.isInitialized() ? console.log(true) : console.log(false);
    GDrive.files
          .createFileMultipart(
            this.state.filebase64,
            "image/jpg",
            {
              parents: ['root'], //or any path
              name: "newImage.jpg",
            },
            true,
          )
          .then(a => {
            console.log(a);
          }).catch = err => {
            console.log('error', err);
          };

我能够成功上传文件。错误是由于问题403中提到的访问不足造成的。因为下面提到的步骤不在react-native-google-drive-api-wrapper和@react-native-community/google-signin的文档中,我们应该这样做以启用所需的 apis.

转到 Google 云控制台 -> API 和服务 -> Select 项目 -> 单击启用 API 和服务 -> 搜索驱动器 -> 打开驱动器选项 -> 单击启用 API