2020年5月28日 星期四

[ Android Stubio ] 連線Firebase之Authentication 註冊登入帳號密碼與換頁傳送字串


一、系統給予的教學如下:
Ⅰ、Connect your app to Firebase:連線Firebase
Ⅱ、Add Firebase Authentication to your app:安裝Firebase Authentication套件
Ⅲ、Check current auth state
資料型別:
private FirebaseAuth mAuth;



放入 onCreate() 以內:
mAuth = FirebaseAuth.getInstance();

初始化您的活動時,請檢查用戶當前是否已登錄:

@Override
public void onStart() {
    super.onStart();
    // Check if user is signed in (non-null) and update UI accordingly.
    FirebaseUser currentUser = mAuth.getCurrentUser();
    updateUI(currentUser);
}

Ⅳ、Sign up new users:註冊新用戶

mAuth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    // 登錄成功,使用登錄用戶的信息更新用戶界面
                    Log.d(TAG, "createUserWithEmail:success");
                    FirebaseUser user = mAuth.getCurrentUser();
                    updateUI(user);
                } else {
                    // 如果登錄失敗,則向用戶顯示一條消息。
                    Log.w(TAG, "createUserWithEmail:failure", task.getException());
                    Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                    updateUI(null);
                }

                // ...
            }
        });


Ⅴ、Sign in exisiting users:登錄現有用戶

mAuth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    // 登錄成功,使用登錄用戶的信息更新用戶界面
                    Log.d(TAG, "signInWithEmail:success");
                    FirebaseUser user = mAuth.getCurrentUser();
                    updateUI(user);
                } else {
                    // 如果登錄失敗,則向用戶顯示一條消息。
                    Log.w(TAG, "signInWithEmail:failure", task.getException());
                    Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                    updateUI(null);
                }

                // ...
            }
        });

Ⅵ、Access user information:訪問用戶信息

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // 姓名,電子郵件地址和個人資料照片網址
    String name = user.getDisplayName();
    String email = user.getEmail();
    Uri photoUrl = user.getPhotoUrl();

    // 檢查用戶的電子郵件是否已驗證
    boolean emailVerified = user.isEmailVerified();

 
    //用戶的ID,對於Firebase項目而言是唯一的。 請勿使用此值來
    //如果您有後端服務器,請與您的後端服務器進行身份驗證。 採用
    // FirebaseUser.getIdToken()代替:Firebase用戶。 獲取ID令牌代替。

Ⅶ、Optional: Configure ProGuard 可選:配置ProGuard

-keepattributes Signature 不混淆Annotation
-keepattributes *Annotation*

二、訊息說明如下:
Ⅰ、task.getException()錯誤來源與訊息如下:

使用task.getException().getMessage()為只出現錯誤訊息。

1. com.google.firebase.auth.FirebaseAuthWeakPasswordException: The given password is invalid. [ Password should be at least 6 characters ]
以上為指定的密碼無效。 [密碼至少應為6個字符]

2. com.google.firebase.auth.FirebaseAuthInvalidCredentialsException: The email address is badly formatted.
以上為電子郵件地址格式錯誤。


3. com.google.firebase.auth.FirebaseAuthInvalidCredentialsException: The password is invalid or the user does not have a password
以上為密碼無效或用戶沒有密碼。

4. com.google.firebase.auth.FirebaseAuthInvalidUserException: There is no user record corresponding to this identifier. The user may have been deleted.
以上為沒有與此標識符對應的用戶記錄。 用戶可能已被刪除。

5. com.google.firebase.auth.FirebaseAuthUserCollisionException: The email address is already in use by another account.
以上為該電子郵件地址已被另一個帳戶使用。

Ⅱ、使用 ((FirebaseAuthException)task.getException()).getErrorCode()會出現訊息如下:

1. ERROR_WEAK_PASSWORD :密碼錯誤!!!

2. ERROR_INVALID_EMAIL :錯誤的無效電子郵件

3. ERROR_WRONG_PASSWORD :錯誤的密碼

4. ERROR_USER_NOT_FOUND :錯誤未找到用戶

5. ERROR_EMAIL_ALREADY_IN_USE :錯誤電子郵件已在使用中


三、影片教學:

沒有留言:

張貼留言

影片的問題請留在影片的留言區裡。
部落格不會另外通知給我,所以很難發現你有留言。