Android Facebook登录无一例外失败,只是"Sorry something went wrong"

Android Facebook login fails without an exception, just "Sorry something went wrong"

我正在尝试在我的应用程序中实现 Facebook 登录,但我遇到了一个非常特殊的问题,登录过程开始时失败并显示一条非常神秘的消息,并且我的应用程序端没有抛出异常,所以我不知道怎么回事

我怀疑我在登录过程中使用 DialogFragment 与我有关,而 Facebook LoginButton 是此 DialogFragment 的一部分,而不是普通片段或 activity。我在 XML:

中添加了登录按钮
 <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
}

当我按下登录按钮时,我看到一个加载进度条,然后 Facebook 应用程序打开,我点击我的帐户,然后再加载一些后,我看到这个屏幕:

我已经按照文档 here but I cannot seem to get it to work. Any help is greatly appreciated. I even printed the key hash from within my code as mentioned here in the documnetation 进行操作,并且我在开发者控制台上获得了正确的哈希值,但仍然出现错误。谢谢

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

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

然而,它可能没有关联,因为错误是在实际 FB activity 返回之前抛出的,所以可能是 Facebook 内部错误已被修复。

祝所有面临类似问题的人好运,对 FB SDK 的支持几乎不存在。

编辑以添加 Sourabh 评论:“我发现我的代码存在问题。原来我是用大写字母 (EMAIL) 发送权限“电子邮件”。不得不多次检查我的代码的每一行。它糟透了,他们没有发送准确的错误消息。–“

根据 Sourabh 的评论,我修复了检查 logIn facebook 功能中权限的错误。仔细检查您的权限,如果它不起作用,请尝试只发送电子邮件,看看它是否有效。