android-fragments Android Facebook登录失败,没有异常,只是“对不起,出了问题”

krcsximq  于 2022-11-14  发布在  Android
关注(0)|答案(3)|浏览(195)

我试图在我的应用程序中实现Facebook登录,我面临着一个非常奇怪的问题,登录过程开始,失败,并显示一条非常神秘的消息,我的应用程序端没有抛出异常,所以我不知道发生了什么。
我怀疑我在登录过程中使用DialogFragment是有原因的,Facebook的LoginButtonDialogFragment的一部分,而不是一个普通的片段或活动。

<com.facebook.login.widget.LoginButton
        android:id="@+id/loginFacebookButton"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/default_margin_double"
        android:layout_marginEnd="@dimen/default_margin_double"
        android:layout_marginBottom="@dimen/default_margin"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        tools:background="@drawable/rounded_blue_bg"
        android:layout_marginTop="@dimen/default_margin"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:paddingLeft="@dimen/default_margin_double"
        app:layout_constraintBottom_toTopOf="@id/loginOrLayout" />

我在onCreateDialog中添加了代码回调

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
    val dialog = super.onCreateDialog(savedInstanceState)
    setStyle(STYLE_NORMAL, R.style.FullscreenDialog)

    val view = View.inflate(context, R.layout.fragment_login, null)

    //FB Login callback manager
    val callbackManager = CallbackManager.Factory.create()
    val fbLoginButton = view.loginFacebookButton
    fbLoginButton.fragment = this
    fbLoginButton.setPermissions(listOf("name", "email", "public_profile"))
    fbLoginButton.loginBehavior = LoginBehavior.NATIVE_WITH_FALLBACK
    fbLoginButton.registerCallback(callbackManager,
            object : FacebookCallback<LoginResult> {
                override fun onSuccess(loginResult: LoginResult) {
                    fbLoginSuccessful(loginResult)
                }

                override fun onCancel() {}

                override fun onError(exception: FacebookException) {
                    Log.w(TAG, "onError: Failed to login with FB.", exception)
                    loginFailed(exception.localizedMessage)
                }
            })

    return dialog
}

当我按下登录按钮时,我会看到一个正在加载的ProgressBar,然后Facebook应用程序打开,我点击我的帐户,然后在加载了一些内容后,我会看到这个屏幕:

我已经按照文档here,但我似乎不能让它工作。任何帮助都是非常感谢的。我甚至打印了我的代码中的密钥散列提到here in the documnetation,我有正确的散列在开发者控制台,但仍然得到错误。谢谢

zrfyljdw

zrfyljdw1#

我的片段中似乎遗漏了以下内容:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    callbackManager.onActivityResult(requestCode, resultCode, data)
    super.onActivityResult(requestCode, resultCode, data)
}

然而,它可能没有相关性,因为错误是在实际FB活动返回之前抛出的,所以可能是一个内部Facebook错误,已经修复。
祝任何面临类似问题的人好运,对FB SDK的支持实际上是不存在的。

r6l8ljro

r6l8ljro2#

编辑以添加Sourabh注解:“我发现我的代码有问题。原来我是用大写字母(EMAIL)发送权限“电子邮件”的。不得不多次检查我的代码的每一行。糟糕的是,他们没有发送精确的错误消息。-”
根据Souabh的评论,我修正了这个错误,检查登录facebook功能的权限。再次检查你的权限,如果它不工作,尝试只发送电子邮件,看看它是否工作。

lg40wkob

lg40wkob3#

对我来说,这是一个权限问题,我添加了“移动的”也在权限和这个错误出现。删除后,一切似乎工作完美。

相关问题