Я планирую создать веб-приложение, позволяющее пользователю загружать файлы на мой диск. Я создаю учетную запись службы и получаю токен OAuth для Google Picker. Я подтверждаю, что токен доступа действителен. Однако API Google Picker возвращает 403. Он работает, только если я вхожу в свою учетную запись ('myemail@example.com').
Я искал много дней, но у меня все еще есть решение для что. Любые комментарии приветствуются.
Вот мой код.
Я планирую создать веб-приложение, позволяющее пользователю загружать файлы на мой диск. Я создаю учетную запись службы и получаю токен OAuth для Google Picker. Я подтверждаю, что токен доступа действителен. Однако API Google Picker возвращает 403. Он работает, только если я вхожу в свою учетную запись ('myemail@example.com'). Я искал много дней, но у меня все еще есть решение для что. Любые комментарии приветствуются. Вот мой код. [code]
let accessToken = response['access_token']; document.getElementById('authorize_button').style.visibility = 'visible';
/** * Create and render a Picker object for searching images. */ function createPicker() { const view = new google.picker.View(google.picker.ViewId.DOCS); view.setMimeTypes('image/png,image/jpeg,image/jpg'); const picker = new google.picker.PickerBuilder() .enableFeature(google.picker.Feature.NAV_HIDDEN) .enableFeature(google.picker.Feature.MULTISELECT_ENABLED) .setDeveloperKey(API_KEY) .setAppId(APP_ID) .setOAuthToken(accessToken) .addView(view) .addView(new google.picker.DocsUploadView()) .setCallback(pickerCallback) .build(); picker.setVisible(true); }
/** * Displays the file details of the user's selection. * @param {object} data - Containers the user selection from the picker */ async function pickerCallback(data) { if (data.action === google.picker.Action.PICKED) { let text = `Picker response: \n${JSON.stringify(data, null, 2)}\n`; const document = data[google.picker.Response.DOCUMENTS][0]; const fileId = document[google.picker.Document.ID]; console.log(fileId); const res = await gapi.client.drive.files.get({ 'fileId': fileId, 'fields': '*', }); text += `Drive API response for first document: \n${JSON.stringify(res.result, null, 2)}\n`; window.document.getElementById('content').innerText = text; } }