Luc*_* P. 6 android android-fragments facebook-login android-dialogfragment kotlin
我正在尝试在我的应用程序中实现 Facebook 登录,但我面临一个非常奇怪的问题,登录过程开始时,失败并显示一条非常神秘的消息,并且我的应用程序方面没有抛出任何异常,所以我不知道是什么继续。
我怀疑DialogFragment我在登录过程中使用 a 与我有关,而 FacebookLoginButton是其中的一部分,DialogFragment而不是正常的片段或活动。我在我的 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" />
Run Code Online (Sandbox Code Playgroud)
我在代码中添加回调,在我的 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
}
Run Code Online (Sandbox Code Playgroud)
当我按下登录按钮时,我得到一个正在加载的 ProgressBar,然后 Facebook 应用程序打开,我点击我的帐户,然后在更多加载后,我得到这个屏幕:
我已经按照此处的文档进行操作,但似乎无法使其正常工作。任何帮助是极大的赞赏。我什至在文档中提到的我的代码中打印了密钥散列,并且我在开发人员控制台中有正确的散列,但仍然出现错误。谢谢
我的片段中似乎缺少以下内容:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
callbackManager.onActivityResult(requestCode, resultCode, data)
super.onActivityResult(requestCode, resultCode, data)
}
Run Code Online (Sandbox Code Playgroud)
然而,它可能没有相关性,因为错误是在实际 FB 活动返回之前抛出的,所以也许这是一个已修复的内部 facebook 错误。
祝遇到类似问题的人好运,对 FB SDK 的支持几乎不存在。
| 归档时间: |
|
| 查看次数: |
1163 次 |
| 最近记录: |