Android Facebook 登录无效

Android Facebook Login is not working

我正在开发一个使用 Facebook 登录的 Android 应用程序。这是我在 Android 中的第一个 Facebook 登录集成。我在将 facebook 登录集成到我的应用程序时遇到了问题,因为在我的回调中没有显示登录成功与否。

我从调试签名密钥生成了 Facebook 哈希密钥,并在 Facebook 开发人员设置中设置了凭证,如下所示。

在class名称中我设置了com.mmfashionnetwork.ptn.www.mmfashion.LoginActivity即登录Activity,其中存在facebook登录按钮和回调函数。我的默认 activity 是 MainActivity。 facebook 应用程序是测试模式。

这是我的登录activity和回调函数

public class LoginActivity extends AppCompatActivity {

    private EditText tfEmail;
    private EditText tfPassword;
    private Button btnLogin;
    private ProgressDialog loadingDialog;
    private TextView tvForgetPassword;
    private TextView tvCreateAccount;
    private TextView tvTitle;
    private Config config;
    private LoginButton btnFbLogin;
    private CallbackManager callbackManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        //other steps
        setUpFbLoginBtn();
    }

    private void setUpFbLoginBtn()
    {
        callbackManager = CallbackManager.Factory.create();
        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Toast.makeText(getBaseContext(),"Success",Toast.LENGTH_SHORT).show();
            }

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

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

}

我还在 Android 清单文件中设置了所需的凭据。问题是回调函数没有被调用。如您所见,我正在根据状态在回调中敬酒消息。如果我尝试登录,请单击 Facebook 登录按钮。如屏幕截图所示,我被重定向到 Facebook。

当我点击确定时,没有回调函数被调用。当前截图说已经授权。但是,当我第一次登录时,当我被重定向到我的应用程序登录 Activity 时,它也没有显示任何消息。登录后如何检索数据?在开发者设置中,我必须设置 login activity class 或 main activity class?我尝试将两者设置为交替。两者都给了我相同的结果。

使用此代码登录 Facebook:

public class LoginActivity extends AppCompatActivity {

    private EditText tfEmail;
    private EditText tfPassword;
    private Button btnLogin;
    private ProgressDialog loadingDialog;
    private TextView tvForgetPassword;
    private TextView tvCreateAccount;
    private TextView tvTitle;
    private Config config;
    private LoginButton btnFbLogin;
    private CallbackManager callbackManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        setUpFbLoginBtn();
    }

    private void setUpFbLoginBtn() {

        callbackManager = CallbackManager.Factory.create();
        LoginManager.getInstance().logInWithReadPermissions(LoginActivity.this, Arrays.asList("public_profile, email, user_birthday, user_friends"));
        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Toast.makeText(getBaseContext(), "Success", Toast.LENGTH_SHORT).show();
            }

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

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

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }
}