登录按钮 facebook android 不会重定向到新的 activity

Login button facebook android doesn't redirect to new activity

当我 运行 我的 Android 应用程序,并单击批准以授予权限时,它不会被重定向到 MainActivity。 "Logged in" 消息未显示在目录中。我已经阅读了 Facebook 开发人员指南,并将我的代码与 Stack 上的不同主题进行了比较。我看不出我做错了什么。

我很乐意提供帮助。

public class Login extends Activity {

/**
 * Called when the activity is first created.
 */

     private CallbackManager callbackManager;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());
    setContentView(R.layout.activity_login);
    final CallbackManager callbackManager = CallbackManager.Factory.create();
    LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions("public_profile", "email", "user_friends");


    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {


        @Override
        public void onSuccess(LoginResult loginResult) {

            Intent i = new Intent(Login.this, MainActivity.class);
            startActivity(i);
            System.out.print("Logged in");

        }

        @Override
        public void onCancel() {
            // App code

        }

        @Override
        public void onError(FacebookException exception) {
            // App code
            Log.i("Error" , "Error");
            }


        });
    }

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

}

堆栈跟踪

  java.lang.RuntimeException: Failure delivering result   ResultInfo{who=null, request=64206, result=-1, data=Intent { (has extras) }} to   activity {org.MYapp.FBtestApp/org.MYapp.FBtestApp.Login}:   java.lang.NullPointerException: Attempt to invoke interface method 'boolean   com.facebook.CallbackManager.onActivityResult(int, int, android.content.Intent)'   on a null object reference
          at android.app.ActivityThread.deliverResults(ActivityThread.java:3974)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4017)

 Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'boolean com.facebook.CallbackManager.onActivityResult(int, int, android.content.Intent)' on a null object reference
        at org.MYapp.FBtestApp.Login.onActivityResult(Login.java:98)

要使登录正常工作,您必须从 FacebookCallback 匿名 class 中删除 onActivityResult() 方法。 正确的代码应该是这样的:

private CallbackManager callbackManager;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    FacebookSdk.sdkInitialize(getApplicationContext());

    callbackManager = CallbackManager.Factory.create();

    LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions("public_profile", "email", "user_friends");

    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            Intent i = new Intent(Login.this, MainActivity.class);
            startActivity(i);
            System.out.print("Logged in");
        }

        @Override
        public void onCancel() {
            // App code

        }

        @Override
        public void onError(FacebookException exception) {
            // App code
            Log.i("Error" , "Error");
        }
    });
}

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

首先,插入私有private CallbackManager callbackManager; 进入你的代码。它应该看起来像这样:

callbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);

然后添加FacebookSdk.sdkInitialize(getApplicationContext());

之前 super.onCreate(savedInstanceState);

试试这个希望它有效

以下对我有用:

已添加:

FacebookSdk.sdkInitialize(getApplicationContext());

之前:

super.onCreate(savedInstanceState);

很奇怪,之前一切正常;但突然间,我遇到了这个问题。现在,它已通过上述解决方案修复。