登录按钮Facebook的Andr​​oid不重定向到新的活动 [英] Login button facebook android doesn't redirect to new activity

查看:962
本文介绍了登录按钮Facebook的Andr​​oid不重定向到新的活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我运行我的Andr​​oid应用程序,并单击批准的授予权限何尝不是重定向到在MainActivity。的记录中的消息中不目录下载显示出来。我已阅读Facebook的开发者指南,并与我的code到这里堆栈不同的主题。我看不出我已经做错了什么事。

我会帮忙很高兴。

 公共类扩展登录活动{/ **
 *当第一次创建活动调用。
 * /     私人CallbackManager callbackManager;@覆盖
公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());
    的setContentView(R.layout.activity_login);
    最终CallbackManager callbackManager = CallbackManager.Factory.create();
    LoginButton loginButton =(LoginButton)findViewById(R.id.login_button);
    loginButton.setReadPermissions(public_profile,电子邮件,user_friends);
    loginButton.registerCallback(callbackManager,新FacebookCallback< LoginResult>(){
        @覆盖
        公共无效的onSuccess(LoginResult loginResult){            意图I =新意图(Login.this,MainActivity.class);
            startActivity(ⅰ);
            System.out.print(已登录);        }        @覆盖
        公共无效onCancel(){
            //应用code        }        @覆盖
        公共无效onerror的(FacebookException除外){
            //应用code
            Log.i(错误,错误);
            }
        });
    }  @覆盖
    保护无效的onActivityResult(INT申请code,INT结果code,意图数据){
      callbackManager.onActivityResult(要求code,结果code,数据);
  }}

堆栈跟踪

 了java.lang.RuntimeException:不提供结果ResultInfo {谁= NULL,请求= 64206,结果= -1,数据= {意向(有临时演员)}}到活动组织{一个空对象上尝试调用接口方法'布尔com.facebook.CallbackManager.onActivityResult(INT,INT,android.content.Intent):.MYapp.FBtestApp / org.MYapp.FBtestApp.Login}:显示java.lang.NullPointerException参考
          在android.app.ActivityThread.deliverResults(ActivityThread.java:3974)
        在android.app.ActivityThread.handleSendResult(ActivityThread.java:4017) 显示java.lang.NullPointerException:引起尝试调用接口方法'布尔com.facebook.CallbackManager.onActivityResult(INT,INT,android.content.Intent)对空对象引用
        在org.MYapp.FBtestApp.Login.onActivityResult(Login.java:98)


解决方案

有关登录工作,你必须从内部<$删除的onActivityResult()方法C $ C> FacebookCallback anomymous类。
正确的code应该是这样的:

 私人CallbackManager callbackManager;@覆盖
公共无效的onCreate(捆绑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,电子邮件,user_friends);    loginButton.registerCallback(callbackManager,新FacebookCallback&LT; LoginResult&GT;(){
        @覆盖
        公共无效的onSuccess(LoginResult loginResult){
            意图I =新意图(Login.this,MainActivity.class);
            startActivity(ⅰ);
            System.out.print(已登录);
        }        @覆盖
        公共无效onCancel(){
            //应用code        }        @覆盖
        公共无效onerror的(FacebookException除外){
            //应用code
            Log.i(错误,错误);
        }
    });
}@覆盖
保护无效的onActivityResult(INT申请code,INT结果code,意图数据){
    super.onActivityResult(要求code,结果code,数据);
    callbackManager.onActivityResult(要求code,结果code,数据);
}

When i run my Android app, and click approve to the give permissions it not get redirected to the MainActivity. The "Logged in" message doesn't shows up in the Catlog. I have read the Facebook developers guide, and compared my code to different topics here at Stack. I can't see i have done anything wrong.

I would be very glad for help.

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);
  }

}

StackTrace

  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)

解决方案

For the login to work, you have to remove the onActivityResult() method from inside the FacebookCallback anomymous class. The correct code should look like this:

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);
}

这篇关于登录按钮Facebook的Andr​​oid不重定向到新的活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆