Проблема "Чтобы выбрать элемент, пожалуйста, войдите в систему", возникающая случайным образом при использовании интерфейса Google Drive Picker - PullRequest
1 голос
/ 17 мая 2019

Я использую интерфейс Google Drive Picker для выбора папки и создания или обновления электронной таблицы в эту папку по расписанию

Иногда это работает так, как ожидалось, но в последнее время отображается сообщение «Чтобы выбрать элемент, пожалуйста, войдите в систему». При нажатии кнопки «Войти» отображается сообщение «Запрошенная вами функция в данный момент недоступна. Повторите попытку позже». Раньше это происходило при повторной авторизации сразу после отзыва доступа, но теперь я запрашиваю дополнительные параметры, например, для кого используется папка, дата создания, имя папки для отображения в интерфейсе. Несколько дней он работал нормально, но сейчас вышеупомянутая проблема встречается часто.

  createPicker(oauthToken, authCode, authUser) {
    const googleViewId = window.google.picker.ViewId.FOLDERS;
    const docsView = new window.google.picker.DocsView(googleViewId)
      .setIncludeFolders(true)
      .setMimeTypes('application/vnd.google-apps.folder')
      .setSelectFolderEnabled(true);

    const picker = new window.google.picker.PickerBuilder()
      .addView(docsView)
      .setOAuthToken(oauthToken)
      .setDeveloperKey(this.props.developerKey)
      .setCallback(data => {
        if (data.action === window.google.picker.Action.PICKED) {
          this.fetchFolderDetails(data, authCode, authUser);
        }
      });

    if (this.props.multiSelect) {
      picker.enableFeature(window.google.picker.Feature.MULTISELECT_ENABLED);
    }
    picker.build().setVisible(true);
  }
  fetchFolderDetails(data, authCode, authUser) {
    window.gapi.client
      .init({
        apiKey: this.props.developerKey
      })
      .then(() =>
        window.gapi.client.request({
          path: 'https://www.googleapis.com/drive/v2/files/' + data.docs[0].id,
          params: {
            fields: 'permissions, title, createdDate, shared'
          }
        })
      )
      .then(response => {
        let googleDriveData = {
          folderId: data.docs[0].id,
          mimeType: data.docs[0].mimeType,
          authCode,
          authUser,
          folderName: response.result.title,
          permissions: response.result.permissions,
          shared: response.result.shared,
          createdTime: response.result.createdDate
        };

        this.props.onChange(googleDriveData);
      });
  }

Я ожидаю увидеть список папок после авторизации. enter image description here

enter image description here

Обновление Добавление области видимости диска Google несколько устранило проблему, но проблема с повторной авторизацией сохраняется.

...