Googleドライブからのサインアウト


BaseDemoActivity.java を利用すると最初に使用アカウントを選択した後、アカウントを変更することができません。

そこで、サインアウトするコードを追加しました。

BaseDemoActivity.java の抜粋(灰色部分が変更箇所)


public abstract class BaseDemoActivity extends Activity {

    /**
    * Google sign-in client
    */
    private GoogleSignInClient mGoogleSignInClient;

    /**
    * Google sign-in account
    */
    private GoogleSignInAccount mGoogleSignInAccount;

    /**
    * Starts the sign-in process and initializes the Drive client.
    */
    protected void signIn() {
        Set requiredScopes = new HashSet<>(2);
        requiredScopes.add(Drive.SCOPE_FILE);
        requiredScopes.add(Drive.SCOPE_APPFOLDER);
        GoogleSignInAccount signInAccount = GoogleSignIn.getLastSignedInAccount(this);

        GoogleSignInOptions signInOptions =
            new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestScopes(Drive.SCOPE_FILE)
                    .requestScopes(Drive.SCOPE_APPFOLDER)
                    .build();
        mGoogleSignInClient = GoogleSignIn.getClient(this, signInOptions);

        if (signInAccount != null &&
                signInAccount.getGrantedScopes().containsAll(requiredScopes)) {
            initializeDriveClient(signInAccount);
        } else {
            startActivityForResult(mGoogleSignInClient.getSignInIntent(),
                    REQUEST_CODE_SIGN_IN);
        }
    }


    /**
    * Account Signout
    */
    protected void signOut() {
        if (mGoogleSignInClient != null) {
            mGoogleSignInClient.signOut();
        }
    }

    /**
    * Continues the sign-in process, initializing the Drive clients with the current
    * user's account.
    */
    private void initializeDriveClient(GoogleSignInAccount signInAccount) {
        mGoogleSignInAccount = signInAccount;
        mDriveClient = Drive.getDriveClient(getApplicationContext(), signInAccount);
        mDriveResourceClient = Drive.getDriveResourceClient(getApplicationContext(), signInAccount);
        onDriveClientReady();
    }

    /**
    * Get google sign-in account
    */
    protected GoogleSignInAccount getGoogleSignInAccount() {
        return mGoogleSignInAccount;
    }
}

 

BaseDemoActivity から派生した Activity でのサインアウト処理です。

signOut();
finish();

サインアウトした後は、Googleドライブが利用できませんので、finish() します。

これで、再び Activity を呼び出したときにアカウント選択できるようになります。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください