如何在 Android 登录中获取 Firebase 身份验证令牌

gro*_*ble 1 android firebase firebase-authentication

我正在使用 Firebase 身份验证将用户登录到我的网络应用程序和 Android 应用程序。

Web 应用程序的流程允许我从客户端登录用户,然后将 Firebase 令牌传递到我的服务器,在服务器上我使用 Firebase 进行验证,然后再将各种用户信息添加到我的数据库。

我现在正在为 Android 尝试同样的操作,但在获取令牌时遇到一些问题。这是登录代码:

    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
    // ...
    mAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener((MainActivity) context, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // ***I want to get the token here***
                        FirebaseUser fbUser = task.getResult().getUser();

                        // send user details and token to server

                    } else {
                        // If sign in fails, display a message to the user.

                        }
                    }
               }
          });
Run Code Online (Sandbox Code Playgroud)

在其他地方,我看到在 Firebase 文档中,有一个片段可以获取Task<GetTokenResult>,这就是我想要的,但我似乎无法在方法中得到它createUserWithEmailAndPassword

来自 firebase 文档

FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();
mUser.getIdToken(true)
    .addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
    public void onComplete(@NonNull Task<GetTokenResult> task) {
        if (task.isSuccessful()) {
            String idToken = task.getResult().getToken();
            // Send token to your backend via HTTPS
            // ...
        } else {
            // Handle error -> task.getException();
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得令牌createUserWithEmailAndPassword

Dou*_*son 5

登录完成后,您可以在第一位代码中使用第二位代码。

// ***I want to get the token here***
FirebaseUser fbUser = task.getResult().getUser();
fbUser.getIdToken(true)
    .addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
        // ...
    }
Run Code Online (Sandbox Code Playgroud)