Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Facebook登录小部件按钮时,Facebook登录意图被调用两次_Android_Facebook_Kotlin - Fatal编程技术网

Android 使用Facebook登录小部件按钮时,Facebook登录意图被调用两次

Android 使用Facebook登录小部件按钮时,Facebook登录意图被调用两次,android,facebook,kotlin,Android,Facebook,Kotlin,我正在尝试将Facebook身份验证应用到我的kotlin应用程序中,我已使其成功运行,但每次调用Facebook登录意图时,它都会在您单击“继续登录”后第二次弹出该活动。我发现有人说只使用普通按钮,而不是我尝试过的Facebook按钮,这样就消除了这个问题,但看起来没有那么好。我想知道是否有人知道一种不用普通按钮就能解决这个问题的方法 按钮: <com.facebook.login.widget.LoginButton android:onClick=

我正在尝试将Facebook身份验证应用到我的kotlin应用程序中,我已使其成功运行,但每次调用Facebook登录意图时,它都会在您单击“继续登录”后第二次弹出该活动。我发现有人说只使用普通按钮,而不是我尝试过的Facebook按钮,这样就消除了这个问题,但看起来没有那么好。我想知道是否有人知道一种不用普通按钮就能解决这个问题的方法

按钮:

  <com.facebook.login.widget.LoginButton
                android:onClick="@{loginSelectViewModel::goToFacebook}"
                android:layout_width="match_parent"
                android:layout_height="90dp"
                android:paddingTop="32dp"
                android:paddingBottom="32dp"
                android:id="@+id/btn_login_facebook"
                app:layout_constraintEnd_toEndOf="parent"
                android:layout_marginEnd="16dp" app:layout_constraintStart_toStartOf="parent"
                android:layout_marginStart="16dp" android:layout_marginTop="8dp"
                app:layout_constraintTop_toBottomOf="@+id/btn_login_google"/>
片段函数:

override fun onClickFacebookSignIn(view: View) {
        Timber.d("onClickFacebookSignIn: called")
        val loginManager = LoginManager.getInstance()

        loginManager.registerCallback(callbackManager, object : FacebookCallback<LoginResult>{
            override fun onSuccess(result: LoginResult?) {
                Timber.d("loginmanager: onSuccess called")
                viewModel.facebookLogin(result?.accessToken)
            }

            override fun onCancel() {
                TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }

            override fun onError(error: FacebookException?) {
                TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }

        })

        loginManager.logInWithReadPermissions(this, Arrays.asList("public_profile", "email"))
    }
override fun onClickFacebookSignIn(视图:视图){
木材d(“onClickFacebookSignIn:命名”)
val loginManager=loginManager.getInstance()
registerCallback(callbackManager,对象:FacebookCallback{
成功时覆盖乐趣(结果:LoginResult?){
Timber.d(“loginmanager:onSuccess调用”)
viewModel.facebookLogin(结果?.accessToken)
}
重写fun onCancel(){
TODO(“未实现”)//要更改已创建函数的主体,请使用文件|设置|文件模板。
}
重写错误(错误:FacebookException?){
TODO(“未实现”)//要更改已创建函数的主体,请使用文件|设置|文件模板。
}
})
loginManager.logInWithReadPermissions(这个、Arrays.asList(“public_profile”、“email”))
}

据我所知,on success被调用了两次,但实际上“onClickFacebookSignIn”功能只被调用了一次。

在多看了几个小时后,我发现Facebook登录按钮小部件具有调用Facebook登录活动的附加功能。我的应用程序并没有设置为拦截这个登录活动实例,所以我最终只是创建了一个看起来像Facebook按钮的按钮。对于需要此解决方案的任何人,这就是我的按钮XML的外观

<Button
                android:onClick="@{loginSelectViewModel::goToFacebook}"
                android:id="@+id/btn_login_facebook"
                android:layout_width="match_parent"
                android:layout_height="90dp"
                android:layout_marginStart="16dp"
                android:layout_marginTop="12dp"
                android:layout_marginEnd="16dp"
                android:background="#3B5998"
                android:backgroundTint="#3B5998"
                android:text="@string/login_select_facebook"
                android:textSize="18sp"
                android:textColor="#ffffff"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/btn_login_google" />

<Button
                android:onClick="@{loginSelectViewModel::goToFacebook}"
                android:id="@+id/btn_login_facebook"
                android:layout_width="match_parent"
                android:layout_height="90dp"
                android:layout_marginStart="16dp"
                android:layout_marginTop="12dp"
                android:layout_marginEnd="16dp"
                android:background="#3B5998"
                android:backgroundTint="#3B5998"
                android:text="@string/login_select_facebook"
                android:textSize="18sp"
                android:textColor="#ffffff"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/btn_login_google" />