Gra*_*lov 23 android firebase google-play-services firebase-authentication
当我打电话mFirebaseAuth.signOut()
或mFirebaseUser.delete()
我的FirebaseAuth.AuthStateListener()
作品正确并null
以FirebaseUser
实例形式返回时onAuthStateChanged
,我刷新UI并显示"使用Google登录"按钮.
但是当我想再次登录时,我看不到用户弹出窗口(我的设备上有2个用户,附加了图像).该应用仅在首次登录时显示此弹出窗口,之后它使用相同的用户.如果我在设置屏幕上清除应用程序的数据,我将能够再次看到此弹出窗口.
我的问题是如何在每次退出后显示此弹出窗口.
我按下登录按钮时运行此代码:
// in onCreate()
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
// in OnClickListener
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, FirebaseActivity.REQUEST_SIGN_IN);
Run Code Online (Sandbox Code Playgroud)
在onActivityResult()
,我得到一个实例,GoogleSignInResult
所以我打电话后需要的一切startActivityForResult()
.
Bob*_*der 41
在Firebase Auth Quickstart示例代码中,Google提供商的退出包括以下步骤.你GoogleSignInClient.signOut()
在退出时打电话了吗?
private void signOut() {
// Firebase sign out
mAuth.signOut();
// Google sign out
mGoogleSignInClient.signOut().addOnCompleteListener(this,
new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
updateUI(null);
}
});
}
Run Code Online (Sandbox Code Playgroud)
Sha*_*arp 10
我很困惑,因为所有解决方案都需要引用GoogleSignInClient
,但实际上您不需要持有对它的引用,您可以简单地创建一个新实例并调用signOut()
它。
GoogleSignIn.getClient(
getContext(),
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).build()
).signOut();
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用FirebaseUI库.从某种意义上说,它可以简化登录和注销操作,它将为您完成所有繁重的工作.
科特林
AuthUI.getInstance().signOut(this).addOnCompleteListener {
// do something here
}
Run Code Online (Sandbox Code Playgroud)
Java的
AuthUI.getInstance()
.signOut(ActivityMainOld.this)
.addOnCompleteListener(new OnCompleteListener<Void>(){
@Override
public void onComplete(@NonNull Task<Void> task) {
// do something here
}
});
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
归档时间: |
|
查看次数: |
23330 次 |
最近记录: |