rai*_*man 32 android firebase firebase-authentication
我在Android应用程序中使用Firebase身份验证,我使用Google帐户身份验证作为登录应用程序的选项.
如何知道用户是否首次登录该应用程序?
Eri*_*icT 32
要检查是否是用户首次登录,只需AdditionalUserInfo.isNewUser()在OnCompleteListener.onComplete回调中调用该方法即可.
下面的示例代码,请务必检查null.
OnCompleteListener<AuthResult> completeListener = new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
boolean isNew = task.getResult().getAdditionalUserInfo().isNewUser();
Log.d("MyTAG", "onComplete: " + (isNew ? "new user" : "old user"));
}
}
};
Run Code Online (Sandbox Code Playgroud)
查看文档以获取更多参考 AdditionalUserInfo
在Firebase-ui文档中,您可以按照创建时的时间戳检查上次登录时间戳,如下所示:
FirebaseUserMetadata metadata = auth.getCurrentUser().getMetadata();
if (metadata.getCreationTimestamp() == metadata.getLastSignInTimestamp()) {
// The user is new, show them a fancy intro screen!
} else {
// This is an existing user, show them a welcome back screen.
}
Run Code Online (Sandbox Code Playgroud)
小智 6
根据Firebase auth(16.0.1)的新版本,AuthResult类具有一个成员函数,其结果为true或false(如果用户是新用户)。假设在范围内定义了“凭据”(它是google凭据)。一个例子如下所示:
private FirebaseAuth mAuth;
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
mAuth = FirebaseAuth.getInstance();
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
GoogleSignInAccount acct = task.getResult(ApiException.class);
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
Log.d(TAG, "linkWithCredential:success");
boolean newuser = task.getResult().getAdditionalUserInfo().isNewUser();
if(newuser){
//Do Stuffs for new user
}else{
//Continue with Sign up
}
} else {
Toast.makeText(MyClass.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
});
Run Code Online (Sandbox Code Playgroud)
感谢firebase :)
对于Web版本 9.0(模块化):
您将需要导入“getAdditionalUserInfo”并这样调用它:
signInWithPopup(firebaseAuth, provider)
.then((result) => {
const details = getAdditionalUserInfo(result)
console.log(details.isNewUser);
})
.catch((error) => {
console.log(error);
});
Run Code Online (Sandbox Code Playgroud)
返回的详细信息包括“ isNewUser ”布尔属性。
| 归档时间: |
|
| 查看次数: |
19507 次 |
| 最近记录: |