【发布时间】:2016-06-25 02:28:18
【问题描述】:
我已经实现了Google Picker API,它会弹出一个窗口询问Google authentication,然后向我们显示Google Drive 中所有可用的文件。
一切正常。
但现在我的要求是,我需要访问驱动器中的文件,而无需弹出身份验证。我会将用户名和密码保存在我的数据库中。
有没有办法传递用户凭据并获得授权和访问文件?
我的代码:
<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>
【问题讨论】:
-
请注意,如果没有非常非常好的具体原因,您不应存储 Google 密码。如果这只是你自己的一个项目,那还不错,但你真的不应该为其他用户做。
-
您应该存储刷新令牌而不是用户名和密码。它是开放身份验证的重点。
标签: javascript asp.net google-api google-picker