具有多个用户帐户的Google Drive SDK OAuth2

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有多个用户帐户的Google Drive SDK OAuth2相关的知识,希望对你有一定的参考价值。

如果用户在其Google中拥有多个帐户,则用户必须选择一个帐户,因为它不记得用户之前选择的帐户。 enter image description here 我已经设法使用这些代码和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');
    });
}

我试过这些optionsGoogleAuth.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 活动?

    Google Drive - 服务帐户存储限制

    如何为具有多个帐户的用户在Google App Scripts中选择帐户?

    使用Google Drive SDK获取文件的公共链接

    每个帐户或项目的Google Drive API限制?