Google Picker API с уже сохраненными именем пользователя и паролем
Я реализовал Google Picker API
который выскакивает окно с просьбой Google authentication
а затем показывает нам все файлы, доступные на Google Диске. все отлично работает
Но теперь мое требование: мне нужно получить доступ к файлам на диске без этого всплывающего окна аутентификации. Я сохраню имя пользователя и пароль в моей базе данных.
Есть ли способ передать учетные данные пользователя, авторизоваться и получить доступ к файлам?
Мой код:
<script>
function onApiLoad() {
gapi.load('auth', { 'callback': onAuthApiLoad });
gapi.load('picker');
}
function onAuthApiLoad() {
window.gapi.auth.authorize({
'client_id': 'xxxx.apps.googleusercontent.com',
'scope': ['https://www.googleapis.com/auth/drive']
}, handleAuthResult);
}
var oauthToken;
function handleAuthResult(authResult) {
if (authResult && !authResult.error) {
oauthToken = authResult.access_token;
createPicker();
}
}
function createPicker() {
var picker = new google.picker.PickerBuilder()
.addView(new google.picker.DocsUploadView())
.addView(new google.picker.DocsView())
.setOAuthToken(oauthToken)
.setDeveloperKey('xxxx')
.enableFeature(google.picker.Feature.MULTISELECT_ENABLED)
.addView(new google.picker.VideoSearchView().setSite(google.picker.VideoSearchView.YOUTUBE))
.setCallback(pickerCallback)
.build();
picker.setVisible(true);
}
</script>
2 ответа
При создании средства выбора, т.е. createpicker(), отправьте токен доступа, чтобы он не запрашивал экран согласия. В вашем коде измените createpicker() на createPicker(oauthToken). Пожалуйста, найдите фрагмент кода примера:
function createPicker(token) {
if (pickerApiLoaded && token) {
var picker = new google.picker.PickerBuilder()
.addView(new google.picker.DocsView().setIncludeFolders(true)) //All files and Folders
.setOAuthToken(token)//Access Token
.setDeveloperKey(DEVELOPER_KEY)
.setCallback(pickerCallback)
// Instruct Picker to fill the dialog, minus 2 pixels for the border.
.setSize(DIALOG_DIMENSIONS.width ,
DIALOG_DIMENSIONS.height )
.build();
picker.setVisible(true);
} else {
showError('Unable to load the file picker.');
}
}
Попробуйте следующий код, передав свой access_token..
function createPicker(access_token) {
if (access_token) {
var picker = new google.picker.PickerBuilder()
.addView(new google.picker.DocsUploadView())
.addView(new google.picker.DocsView())
.setOAuthToken(access_token)
.setDeveloperKey('xxxx')
.enableFeature(google.picker.Feature.MULTISELECT_ENABLED)
.addView(new google.picker.VideoSearchView().setSite(google.picker.VideoSearchView.YOUTUBE))
.setCallback(pickerCallback)
.build();
picker.setVisible(true);
} else {
showError('Unable to load the file picker.');
}
}