登录按钮facebook android不会重定向到新活动

dat*_*fen 4 java android facebook facebook-android-sdk

当我运行我的Android应用程序,并单击批准给予权限时,它不会被重定向到MainActivity."登录"消息未显示在Catlog中.我已阅读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);
  }

}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪

  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)
Run Code Online (Sandbox Code Playgroud)

Bil*_*kas 5

要使登录工作,您必须onActivityResult()FacebookCallback同名类中删除该方法.正确的代码应如下所示:

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);
}
Run Code Online (Sandbox Code Playgroud)