具有多个用户帐户的Google Drive SDK OAuth2
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有多个用户帐户的Google Drive SDK OAuth2相关的知识,希望对你有一定的参考价值。
如果用户在其Google中拥有多个帐户,则用户必须选择一个帐户,因为它不记得用户之前选择的帐户。 我已经设法使用这些代码和https://developers.google.com/api-client-library/javascript/features/authentication#specifying-your-client-id-and-scopes引导的配置进行OAuth2身份验证
this.authenticate = function(){
gapi.load('client:auth2',authorize);
}
function authorize(){
gapi.client.setApiKey(API_KEY);
gapi.auth2.init({
client_id: CLIENT_ID,
scope: SCOPES
}).then(function(authResult){
var auth2 = gapi.auth2.getAuthInstance();
auth2.signIn().then(afterSignIn);
});
}
function afterSignIn(){
console.log('authenticated successfully');
$rootScope.authenticated = true;
gapi.client.load('drive', 'v3',function(){
$rootScope.$broadcast('authenticated');
});
}
我试过这些options的GoogleAuth.signIn()
:
auth2.signIn({
'prompt': '**promtOption**'
})...
none
:它没有验证login
:和select_account
一样consent
:和select_account
一样,它还要求离线使用许可......select_account
:与没有options
签约的问题相同
如何让程序记住用户选择?答案
调用auth2.signIn()
将始终提示用户登录,即使他们已经登录。在此之前,请检查他们是否已使用auth2.currentUser.get().isSignedIn()
登录。这是您的代码的修改版本:
function authorize(){
gapi.client.setApiKey(API_KEY);
gapi.auth2.init({
client_id: CLIENT_ID,
scope: SCOPES
}).then(function(authResult){
var auth2 = gapi.auth2.getAuthInstance();
var user = auth2.currentUser.get();
if (user.isSignedIn()) {
afterSignIn();
} else {
auth2.signIn().then(afterSignIn);
}
});
}
以上是关于具有多个用户帐户的Google Drive SDK OAuth2的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Google Drive 和 App Engine SDK 使用 Oauth2 服务帐户
如何使用 Google 服务帐户通过 Activity API 检索 Google Drive 活动?