使用 facebook 登录时出错

error in login with facebook login

我正在尝试在我的应用程序中使用 Facebook 登录。我已经导入了 sdk 并在我的 facebook 开发者帐户上设置了所有正确的设置。但是现在,当我尝试使用 Facebook 登录时,它会将我重定向回登录 activity 而不是主 activity。

Facebook 按钮在我的 xml 文件中导入如下:

    <com.facebook.login.widget.LoginButton
        android:id="@+id/fb_login_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="30dp"
        android:layout_marginBottom="30dp" />

这是我启动 activity 的 oncreate 函数的样子:

    FacebookSdk.sdkInitialize(this);

    callbackManager = CallbackManager.Factory.create();

    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    // user successfully logged in
                    // Create login session
                    session.setLogin(true);
                    // Launch main activity
                    Intent intent = new Intent(LoginActivity.this,
                            MainActivity.class);
                    startActivity(intent);
                    finish();
                }

                @Override
                public void onCancel() {
                    Toast.makeText(getApplicationContext(), "You cancelled while logging in, please login to gain access.", Toast.LENGTH_SHORT).show();

                }

                @Override
                public void onError(FacebookException exception) {
                    Toast.makeText(getApplicationContext(), "An error appeared, please try again.", Toast.LENGTH_SHORT).show();
                }
            });


    setContentView(R.layout.activity_login);

当我点击 facebook 登录按钮时,我被重定向到 facebook 应用程序,当我成功登录时,facebook 应用程序请求许可,但我只是被重定向到登录 activity。

我已经找到问题所在了。 我忘记了一行在您登录后实际启动任何操作的代码,它是:

LoginManager.getInstance().logInWithReadPermissions(这, Arrays.asList("public_profile", "user_friends", "email"));

您应该在设置登录管理器的行为后输入此内容。