如果在Firebase Android初次注册时帐户已经与谷歌联系,请登录Facebook

如果在Firebase Android初次注册时帐户已经与谷歌联系,请登录Facebook,第1张

概述我正在尝试使用Facebook登录重新安装 Android应用程序.最初我使用Google注册并成功地将其与firebase相关联. 但是当我尝试用Facebook做它,它给了一个 FirebaseAuthUserCollisionException 我在Firebase Documentation读了你可以这样做 FirebaseUser prevUser = currentUser;curr 我正在尝试使用Facebook登录重新安装 Android应用程序.最初我使用Google注册并成功地将其与firebase相关联.

但是当我尝试用Facebook做它,它给了一个

FirebaseAuthUserCollisionException

我在Firebase Documentation读了你可以这样做

FirebaseUser prevUser = currentUser;currentUser = auth.signInWithCredential(credential).await().getUser();// Merge prevUser and currentUser accounts and data// ...

但是这里await()方法不再存在.搜索一下后,我发现了这个解决方案

Tasks.await(mAuth.signInWithCredential(credential)).getUser();

但是当获取已经链接的当前用户时,这也会给出错误.我能做些什么来解决这个问题?

解决方法 firefox用户不需要.await()方法.
使用FirebaseAuth.AuthStateListenerinstead.

所以你实现firebase登录与这样的东西:

FirebaseAuth.getInstance()signInWithCredential(credential)                .addOnCompleteListener(new OnCompleteListener<AuthResult>() {                    @OverrIDe                    public voID onComplete(@NonNull Task<AuthResult> task) {                        if (task.isSuccessful()) {                            Log.d(TAG,"login success");                        } else {                            Log.d(TAG,"login error");                        }                    }                });

并实现AuthStateListener,每次用户状态更改时都会被修改:

private FirebaseAuth.AuthStateListener authStateListener;@OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        initAuthStateListener();    }private voID initAuthStateListener() {         authStateListener = new FirebaseAuth.AuthStateListener() {            @OverrIDe            public voID onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {                FirebaseUser user = firebaseAuth.getCurrentUser();                if (user == null) {                    //user is not logged in                } else {                    //user is logged in                 //logic to finish the activity and proceed to the app can be put here                   }            }        };    }    @OverrIDe    protected voID onStart() {        super.onStart();        FirebaseAuth.getInstance().addAuthStateListener(authStateListener);    }    @OverrIDe    protected voID onStop() {        super.onStop();        FirebaseAuth.getInstance().removeAuthStateListener(authStateListener);    }

注意:当authStateListener被添加到firebase auth实例时,onAuthStateChanged被修改一次.

另外,请确保在Firebase控制台(Authentication>> SIGN-IN METHOD>>>>>>在每个电子邮件地址(更改)中设置一个帐号)来防止创建具有相同电子邮件地址参数的多个帐户.

总结

以上是内存溢出为你收集整理的如果在Firebase Android初次注册时帐户已经与谷歌联系,请登录Facebook全部内容,希望文章能够帮你解决如果在Firebase Android初次注册时帐户已经与谷歌联系,请登录Facebook所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1133404.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存