Facebook 的 FirebaseUI 身份验证未登录

2024-02-01

我在 Android 中使用 FirebaseUI Auth 进行用户身份验证。

我的应用程序 build.gradle 中用于 Facebook 登录的依赖项:

compile 'com.google.firebase:firebase-auth:11.0.0'
compile 'com.firebaseui:firebase-ui-auth:2.0.0'
compile 'com.facebook.android:facebook-android-sdk:[4,5)'

我的项目 build.gradle 中的类路径依赖项:

classpath 'com.google.gms:google-services:3.1.0'

我的 Activity onCreate() 中的 FirebaseUI 身份验证代码:

        final AuthUI.IdpConfig facebookIdp = new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER)
                .setPermissions(Arrays.asList("email", "public_profile"))
                .build();

        mAuthChangeListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();

                if (firebaseUser != null) {
                    onSignedInInitialize(firebaseUser.getDisplayName());
                } else {
                    onSignedOutCleanUp();
                    startActivityForResult(
                            AuthUI.getInstance()
                                    .createSignInIntentBuilder()
                                    .setLogo(R.drawable.logo)
                                    .setTheme(R.style.LoginTheme)
                                    .setIsSmartLockEnabled(false)
                                    .setAvailableProviders(
                                            Arrays.asList(
                                                    new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build(),
                                                    facebookIdp,
                                                    new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build()))
                                    .build(),
                            RC_SIGN_IN);
                }
            }
        };

我在同一个活动中的回调方法:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RC_SIGN_IN) {
            if (resultCode == RESULT_OK) {
                Toast.makeText(MainActivity.this, "Signed In!", Toast.LENGTH_SHORT).show();
            } else if (resultCode == RESULT_CANCELED) {
                Toast.makeText(MainActivity.this, "Signing cancelled!", Toast.LENGTH_SHORT).show();
                finish();
            }
        }
    }

还有我的 strings.xml:

<string name="facebook_app_id">xxxxxxxxxxxxxxx</string>
<string name="fb_login_protocol_scheme">fbxxxxxxxxxxxxxxx</string>

当然,我已经在 Firebase 开发者控制台和 Facebook 开发者控制台中添加了所有必要的详细信息。

但是当我点击使用 Facebook 登录按钮,带有 facebook 图标的加载程序会显示几秒钟,但什么也没有发生。它仍然在同一屏幕中。

我的 logcat 详细信息:

06-13 15:59:23.298 23599-26149/com.google.firebase.udacity.friendlychat D/FA: Logging event (FE): user_engagement(_e), Bundle[{firebase_event_origin(_o)=auto, engagement_time_msec(_et)=48262, firebase_screen_class(_sc)=AuthMethodPickerActivity, firebase_screen_id(_si)=-3048364835412835803}]
06-13 15:59:23.352 23599-26149/com.google.firebase.udacity.friendlychat D/FA: Logging event (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, firebase_previous_class(_pc)=AuthMethodPickerActivity, firebase_previous_id(_pi)=-3048364835412835803, firebase_screen_class(_sc)=FacebookActivity, firebase_screen_id(_si)=-3048364835412835801}]
06-13 15:59:23.381 23599-26149/com.google.firebase.udacity.friendlychat D/FA: Connected to remote service
06-13 15:59:24.171 23599-23599/com.google.firebase.udacity.friendlychat E/FacebookProvider: Error logging in with Facebook. SERVER_ERROR: [code] 1675030 [message]: Error performing query. [extra]: Errors while executing operation "ProxyAuthAppLoginStartQuery": At Query.proxy_auth_app_login_start: Failed to resolve field.
06-13 15:59:24.194 23599-26149/com.google.firebase.udacity.friendlychat D/FA: Logging event (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, firebase_previous_class(_pc)=FacebookActivity, firebase_previous_id(_pi)=-3048364835412835801, firebase_screen_class(_sc)=AuthMethodPickerActivity, firebase_screen_id(_si)=-3048364835412835803}]

我的应用程序的屏幕截图:

登录屏幕 https://i.stack.imgur.com/kUScH.png

单击“使用 Facebook 登录”时,加载并消失 https://i.stack.imgur.com/5oaM7.png

回调也不会被触发。


Solution

(1) 权限中应添加“user_friends”。 (2)最重要的是,<string name="facebook_application_id" translatable="false">APPID</string>应该是语法而不是<string name="facebook_app_id">APPID</string>。在developers.facebook.com中,变量名称被指定为“facebook_app_id”,这是不起作用的。正确的变量应该是“facebook_application_id”。 这两个改变就解决了这个问题。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Facebook 的 FirebaseUI 身份验证未登录 的相关文章

随机推荐

  • 如何知道子列表中某个元素的索引

    如何知道子列表中元素的索引 类似的问题在这里被问到 https stackoverflow com questions 176918 finding the index of an item given a list containing
  • UIAutomator Facebook 登录

    我为我的应用程序创建了一个 UIAutomator 登录测试 它适用于某些模拟器 问题是 它并不适用于所有人 UiObject input mDevice findObject new UiSelector instance 0 class
  • SPARQL 查询根据语句的顺序返回不同的结果

    我有一个 SPARQL 查询 它返回两个资源的最具体的常见类 当我尝试运行它时https dbpedia org sparql https dbpedia org sparql 有时它什么也不返回 有时它返回我想要的类 我注意到它与查询中语
  • Spring MVC + Hibernate:数据验证策略

    我们都知道 Spring MVC 通常与 Hibernate Validator 和 JSR 303 集成得很好 但正如有人所说 Hibernate Validator 只是用于 Bean Validation 的东西 这意味着更复杂的验证
  • ES6 类执行多态性的能力

    我试图通过 ES6 类来模拟多态性 以便能够更好地理解这个理论 概念很清楚 设计对象以共享行为并能够用特定行为覆盖共享行为 但恐怕我上面的代码不是一个有效的多态性示例 由于我缺乏经验 如果您能全面地回答以下问题 我将不胜感激 事实上 两个类
  • 使用 swift4 在 xcode 中对单个项目使用不同的 GoogleService-Info.plist

    我有一个项目 但有 4 个不同的环境 开发 暂存 质量检查 生产 我已经从移动设备的设置中给出了他们的 环境的网络服务 URL 路径 现在我想为所有这些不同的环境使用不同的 GoogleService info plist 就像当我从后端选
  • MEF 对象生命周期

    我有一个名为 Foo 的类 using System using System ComponentModel Composition namespace MefTest Export internal class Foo public Fo
  • 拟合部分高斯

    我正在尝试使用拟合高斯总和scikit学习 http scikit learn org stable index html因为 scikit learn高斯混合 http scikit learn org stable modules ge
  • Strope 在页面卸载时发送双重请求

    我用 jQuery Strope 编写了一个 XMPP 客户端 一切都运行良好 一对一 存在 MUC 等 并且包含在 jQuery 插件中 但是 当页面卸载时 它会发送 2 个具有相同 Rid 的最终请求 最近当我开始处理会话附件时 这才成
  • 如何从 GPUImageView 获取 UIImage

    我在我的项目中使用 GPUImageView 库 它使用 GPUImageView 并且我在 GPUImageView 上添加了对比度等滤镜和其他图像效果 如棕褐色等 一切都很好 但问题是现在我想将 GPUImageVIew 转换为 UII
  • 是否可以扩展免费的 monad 解释器?

    给定一个免费的 monad DSL 例如 data FooF x Foo String x Bar Int x deriving Functor type Foo Free FooF 和一个随机解释器Foo printFoo Foo gt
  • 为什么不使用堆数组的元素零?

    这是我对具有任意值的堆的开头的粗略草图 0 1 2 3 4 5 6 7 8 9 10 14 15 22 21 24 23 44 30 为什么 array 0 中的元素必须始终设置为 null 或者为什么我们不应该使用它 有多种方法可以将二叉
  • 如何制作 Angularjs 嵌套路由?

    我是 Angular 的新手 我想知道 AngularJS 是否支持像 emberjs 这样的嵌套路由 我的意思是这样的路由 myappurl company company id department department id 值得一提
  • 使用 Transformer 制作的缩进 XML [重复]

    这个问题在这里已经有答案了 我正在尝试从 Java 创建 XML 但遇到缩进问题 在下面的代码中你可以看到OutputKeys INDENT set to yes set up a transformer TransformerFactor
  • Linux 中可用于删除文件的系统调用

    Linux 上可以使用哪些系统调用来删除文件 我指的不仅仅是 libc wrapper 使用的系统调用 它又由命令行工具使用 以外unlink and unlinkat可以使用哪些系统调用来删除 Linux 计算机上的文件 rename a
  • Perl Getopt::Long 支持参数空格

    我有一个 Perl 脚本 它使用 GetOpts 长 像这样的命令很容易处理 automate action build deploy modules chat email login 我想要实现的是允许用户在参数之间给出空格 E g au
  • Batch:检查参数数量

    我想确保在调用我的批处理时 传递的参数不超过 2 个 有没有一种简单的方法来检查这一点 或者我是否必须根据需要多次调用 SHIFT 直到参数值为空 您可以简单地测试第三个参数是否存在 如果存在则取消 if not 3 echo No mor
  • EditText 中的 Android 标签或气泡

    Can someone please point me in the right direction how to do those bubbles or labels in the EditText something like thos
  • 在 asp.net-mvc 中捕获每个用户的页面视图的最佳方法是什么

    在不降低网站性能的情况下捕获个人页面浏览量的最佳方法是什么 我看到 stackoverflow 到处都显示页面浏览量 每次我点击页面时他们都会插入数据库吗 在 asp net mvc 中 是否有任何推荐的方法来跟踪每个用户的页面视图 我的网
  • Facebook 的 FirebaseUI 身份验证未登录

    我在 Android 中使用 FirebaseUI Auth 进行用户身份验证 我的应用程序 build gradle 中用于 Facebook 登录的依赖项 compile com google firebase firebase aut