首页 > 解决方案 > 使用 LoginManager 不工作的 Facebook 登录 - Fragment Android 中的自定义登录按钮

问题描述

尝试使用 Fragment 中的自定义按钮在 android 中设置 Facebook 登录。

如果我尝试使用 Facebook LoginButton 登录,登录工作正常。

但是下面的代码对我不起作用,出现一个对话框,显示 CONTINUE AS “USER_NAME”,但它没有登录

我的自定义按钮的 XML 代码

<Button
    android:id="@+id/fb_custom_login_btn"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="@color/color_fb_btn"
    android:paddingLeft="10dp"
    android:drawableLeft="@drawable/ic_baseline_facebook_24"
    android:text="@string/loginFacebook"
    android:textColor="@color/colorWhite"
    android:textAllCaps="false"
    android:foreground="?attr/selectableItemBackground"
    android:textSize="16sp"
    android:layout_marginTop="10dp" />

代码片段

private Button fb_btn;
fb_btn = view.findViewById(R.id.fb_custom_login_btn);

//callbackManager is actually declared globally...
CallbackManager callbackManager = CallbackManager.Factory.create();

    fb_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            LoginManager.getInstance().logInWithReadPermissions(getActivity(), Arrays.asList("public_profile", "email"));
            LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    Toast.makeText(getContext(), "OK", Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onCancel() {
                    Toast.makeText(getContext(), "Cancel", Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onError(FacebookException error) {
                    Toast.makeText(getContext(), "Error", Toast.LENGTH_SHORT).show();
                }
            });

        }
    });

片段中的 OnActivityResult

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {  
    // callbackManager is Global and can be accessed here
    callbackManager.onActivityResult(requestCode, resultCode, data);
    super.onActivityResult(requestCode, resultCode, data);
}

标签: androidandroid-studioandroid-fragmentsfacebook-login

解决方案


推荐阅读