Во-первых, после некоторых исследований я обнаружил, что многие люди сталкивались с этой проблемой, но я не нашел конкретного решения этой проблемы. Подходя к вопросу,
Цель: я хочу интегрировать диск Google с моим приложением, чтобы пользователь мог загружать файлы на свой диск из моего приложения. Таким образом, пользователь сначала должен интегрировать свой диск с приложением, а затем использовать средство выбора Google для загрузки/импорта файлов. После интеграции диска Google пользователь больше не должен видеть экран аутентификации, вместо этого по нажатию кнопки должен открываться инструмент выбора Google.
Реализация: при интеграции я использую OAuth2 на стороне сервера и сохраняю учетные данные клиента, которые приведены ниже.
{
access_token: '',
refresh_token: '',
scope: 'https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/userinfo.email openid',
token_type: 'Bearer',
expiry_date: 1578194339897
}
Теперь на стороне клиента я получаю тот же токен доступа и использую для загрузки средства выбора
createPicker() {
const { accessToken } = this.props.userInfo;
const uploadView = new google.picker.DocsUploadView();
var picker = new google.picker.PickerBuilder().
addViewGroup(
new google.picker.ViewGroup(google.picker.ViewId.DOCS).
addView(google.picker.ViewId.DOCUMENTS).
addView(google.picker.ViewId.PRESENTATIONS)
).
addView(uploadView).
setOAuthToken(accessToken). //access token fetched from server
setDeveloperKey(developerKey).
setCallback(this.pickerCallback).
build();
picker.setVisible(true);
}
Ожидаемое поведение: средство выбора Google должно открываться по нажатию кнопки.
Я попытался использовать параметр входа для получения текущего пользователя, но мне не удалось получить текущего пользователя. Помимо этого, я также пытался выполнить авторизацию на стороне клиента с помощью gapi, но он также запрашивает экран аутентификации каждый раз, когда я пытаюсь загрузить средство выбора.
Любая помощь приветствуется. Заранее спасибо.