2015-03-20 4 views
2

Я внедрил Google Picker API, который выдает окно с запросом Google authentication, а затем показывает нам все файлы, доступные на Google Диске. все работает нормально.API Google Picker с уже сохраненным именем пользователя и паролем

Но теперь мое требование: мне нужно получить доступ к файлам на диске без всплывающего окна аутентификации. У меня будет имя пользователя и пароль, сохраненные в моей базе данных.

Есть ли способ передать учетные данные пользователя и получить авторизацию и получить доступ к файлам?

Мой код:

<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> 
+0

Слово предостережения, что вы не должны быть хранящей пароли Google без очень очень хорошей и конкретной причины , Если это всего лишь проект для себя, это не так плохо, но вы действительно не должны делать это для других пользователей. – abraham

+1

вы должны хранить токен обновления, а не имя пользователя и пароль. Его точка Open Authentication. – DaImTo

ответ

0

При создании сборщика 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.'); 
} 
} 
+0

Как мы можем получить этот pickerApiLoaded = true? – RealSteel

0

Попробуйте следующий код, передавая свой 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.'); 
} 
}