java - 如何将 google 和 Facebook 登录集成保存到 firebase 实时数据库 Android Studio Java

标签 java android

我知道如何将基本(电子邮件和密码)信息保存到我的 Firebase 数据库中,但我不知道如何将 google 和 Facebook 登录集成保存到我的 Firebase 数据库中
有人可以解释我吗?
谷歌登录集成代码

 private void firebaseAuthWithGoogle (GoogleSignInAccount acct){


    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
    fAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener() {
                @Override
                public void onComplete(@NonNull Task task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        FirebaseUser user = fAuth.getCurrentUser();
                        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                        startActivity(intent);
                        finish();


                    } else {
                        Toast.makeText(login.this, "Sorry auth failed.", Toast.LENGTH_SHORT).show();


                    }


                    // ...
                }
            });
}

最佳答案

对于 Facebook registerCallback ,您将获得用户名、电子邮件和唯一 ID,您可以通过这些 ID 来检查这是哪个用户。这是示例 代码 :

loginButton.registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    progressDialog.show();
                    System.out.println("onSuccess");
                    GraphRequest request = GraphRequest.newMeRequest(
                            loginResult.getAccessToken(),
                            (object, response) -> {
                                try {
                                 String id = object.getString("id");
                               String  name = object.getString("name");
                                String  email = object.getString("email");
                                } catch (JSONException e) {
                                    Log.e("login", e.getMessage());

                                }
                                } else
                                    Toast.makeText(getApplicationContext(), "Fail to connect with Facebook, Try again later!", Toast.LENGTH_LONG).show();

                            });
                    Bundle parameters = new Bundle();
                    parameters.putString("fields",
                            "id,name,email,gender, birthday");
                    request.setParameters(parameters);
                    request.executeAsync();

                }

                @Override
                public void onCancel() {

                }

                @Override
                public void onError(FacebookException error) {
                }
            });
而对于 谷歌 handleSignInResult ,同样你会personName,personEmail和personId,你可以通过它来检查哪个用户。这是示例 代码 :
 private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
        try {
            GoogleSignInAccount account = completedTask.getResult(ApiException.class);
            if (account != null) {
                String personName = account.getDisplayName();
                String personEmail = account.getEmail();
                String personId = account.getId();
            }
        } catch (ApiException e) {
             
        }
    }
备注 : 还是有不懂的可以私信我。

关于java - 如何将 google 和 Facebook 登录集成保存到 firebase 实时数据库 Android Studio Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67295970/

相关文章:

java - 通过按钮作为显示面板打开另一个类(class)

c# - fragment visual studio xamarin 上的访问按钮

android - 以编程方式选中的 RadioButton 不会取消选中

java - 如何在ES API Java中创建多重索引

java - 如何查找网格中 Flower 对象的数量?

java - TimeZone.getTimeZone() 返回给定空字符串的 GTC 区域,我不需要什么?

java - struts2中的身份验证

安卓 5( Lollipop ): Is it possible to make the Background of a Notification transparent?

android - 当 Activity 退出时,带有线程的自定义 SurfaceView 会使应用程序崩溃

android - 使用 Jenkins 创建安卓模拟器