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

当我运行我的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() { @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 anomymous类中删除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() { @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);之前super.onCreate(savedInstanceState);

试试这个希望这个有效

以下对我有用:

添加:

 FacebookSdk.sdkInitialize(getApplicationContext()); 

之前:

 super.onCreate(savedInstanceState); 

奇怪的是,因为一切都工作得很好; 但突然间,我遇到了这个问题。 现在,它已通过上述解决方案得以修复。