首页 文章

Google Plus登录帐户选择对话框问题

提问于
浏览
2

BACKGROUND

我在我的应用中使用Google Plus OAuth以及Firebase . 当用户点击登录按钮时,会出现帐户选择对话框,用户选择所选的特定帐户并登录 .

PROBLEM

假设用户在该设备中有两个帐户,A和B.最初,他选择帐户A进行登录,然后使用该应用程序然后决定退出 . 现在他再次单击登录按钮,但 the account selection dialog doesn't appear 并使用之前选择的帐户A自动登录 .

WHAT I WANT

我希望每次都向用户显示帐户选择对话框,如果他们愿意,我希望 give them a chance to select a different account .

CODE

以下是我使用Google Api客户端登录的小代码片段 .

String mClientId = parcel.getProviderExtra().getString(CLIENT_ID_KEY);
        GoogleSignInOptions googleSignInOptions;

        googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(mClientId)
                .requestEmail()
                .build();

        mGoogleApiClient = new GoogleApiClient.Builder(activity)
                .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
                .build();

        mGoogleApiClient.connect();

并退出,

Auth.GoogleSignInApi.signOut(mGoogleApiClient);

任何帮助将受到高度赞赏 .

2 回答

  • 1

    通过每次登录前清除默认帐户来解决此问题 .

    @Override
        public void startLogin(Activity activity, String mEmail) {
            Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
            /**
             * Clearing default account every time so that the account picker dialog can be enforced
             */
            if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
                mGoogleApiClient.clearDefaultAccountAndReconnect();
            }
            activity.startActivityForResult(signInIntent, RC_SIGN_IN);
        }
    

    这将强制每次都出现对话框 .

  • 0

    每次用户签名时,只需使用以下方法清除默认帐户即可 .

    private void signIn() {
        Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    
        if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
    
            mGoogleApiClient.clearDefaultAccountAndReconnect();
        }
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }
    

相关问题