Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Facebook解析登录逻辑调用两次_Android_Facebook Android Sdk - Fatal编程技术网

Android Facebook解析登录逻辑调用两次

Android Facebook解析登录逻辑调用两次,android,facebook-android-sdk,Android,Facebook Android Sdk,这是代码 public void redirectToMain(){ Intent intent = new Intent(getApplicationContext(), MainScreen.class); startActivity(intent); finish(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstance

这是代码

public void redirectToMain(){
    Intent intent = new Intent(getApplicationContext(), MainScreen.class);
    startActivity(intent);
    finish();
}


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    pers.clear();
    pers.add("user_friends");
    pers.add("email");

    if (ParseUser.getCurrentUser() != null) {
        redirectToMain();
    }

    loginButton = (LoginButton) findViewById(R.id.login_button);
    callbackManager = CallbackManager.Factory.create();
    loginButton.setReadPermissions("email", "user_friends");
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            parseLogin();
        }

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

        @Override
        public void onError(FacebookException exception) {
            // App code
        }
    });
}

public void parseLogin(){
    loginButton.setVisibility(View.INVISIBLE);
    ParseFacebookUtils.logInWithReadPermissionsInBackground(this, pers, new LogInCallback() {
        @Override
        public void done(ParseUser user, ParseException e) {
            if(user==null){
                Log.i("Cancel", "facebook");
            }else if(user.isNew()){
                Log.i("Parse", "succcess");
                redirectToMain();
            }
            else{
                Log.i("Parse", "old");
                redirectToMain();
            }
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data );
    ParseFacebookUtils.onActivityResult(requestCode,resultCode,data);
}
public-void-redirectomain(){
Intent Intent=新的Intent(getApplicationContext(),MainScreen.class);
星触觉(意向);
完成();
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pers.clear();
添加(“用户朋友”);
添加(“电子邮件”);
if(ParseUser.getCurrentUser()!=null){
番茄红素();
}
loginButton=(loginButton)findviewbyd(R.id.login_按钮);
callbackManager=callbackManager.Factory.create();
setReadPermissions(“电子邮件”、“用户朋友”);
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
parseLogin();
}
@凌驾
公开作废{
//应用程序代码
}
@凌驾
public void onError(facebook异常){
//应用程序代码
}
});
}
public void parseLogin(){
设置可见性(视图不可见);
ParseFacebookUtils.logInWithReadPermissionsInBackground(这个,pers,new LogInCallback(){
@凌驾
公共无效完成(ParseUser用户,parsee异常){
if(user==null){
Log.i(“取消”、“facebook”);
}else if(user.isNew()){
Log.i(“解析”、“成功”);
番茄红素();
}
否则{
Log.i(“解析”、“旧”);
番茄红素();
}
}
});
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
callbackManager.onActivityResult(请求代码、结果代码、数据);
ParseFacebookUtils.onActivityResult(请求代码、结果代码、数据);
}
}


一切正常,用户被重定向到第二个活动,但该活动被调用了两次。另外,表示old的日志部分也在logcat中写入了两次,因此我的假设是parseLogin()或ParseFacebookUtils.log…()被调用了两次。知道为什么会这样吗?

我通过添加一个int和一个while循环来修复它,该循环只执行代码一次。这与其说是修复,不如说是黑客,所以也许有人能想出更好的解决方案。

尝试删除
ParseFacebookUtils.onActivityResult(requestCode、resultCode、data)…是的,它可以工作。非常感谢。我已经添加了它作为一个答案……。经过更多的测试,我发现这个解决方案不起作用,因为parse需要那一行来登录。否则它会给出一个错误“当另一个应用程序正在注销时无法登录”。请删除您的答案。@Ubuntuaskdani您找到正确的解决方案了吗?