在Android上使用facebook登录Parse.com(奇怪的崩溃)

在Android上使用facebook登录Parse.com(奇怪的崩溃),android,facebook,parse-platform,Android,Facebook,Parse Platform,我正在使用parse.com,我正在尝试登录facebook。 在登录过程完成并调用回调之前,一切都会顺利运行。发生的情况是(FB登录过程完成后)应用程序崩溃,崩溃时没有显示消息,logcat也没有显示任何信息。我完全迷路了 这是我的密码: fbloginButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v

我正在使用parse.com,我正在尝试登录facebook。 在登录过程完成并调用回调之前,一切都会顺利运行。发生的情况是(FB登录过程完成后)应用程序崩溃,崩溃时没有显示消息,logcat也没有显示任何信息。我完全迷路了

这是我的密码:

fbloginButton.setOnClickListener(new OnClickListener() 
         {
             @Override
             public void onClick(View view)
            {
                 //ProgressDialog progress  = ProgressDialog.show(thisActivity, "Please wait", "Loading please wait..", true);
                 //login.fbLogin(thisActivity);
                 ParseFacebookUtils.logIn(Arrays.asList("email"), thisActivity, new LogInCallback() 
                    {
                        @Override
                        public void done(ParseUser user, ParseException err) 
                        {
                            if (user == null) 
                            {
                                Log.d("MyApp", "Uh oh. The user cancelled the Facebook login.");
                                Toast toast = Toast.makeText(thisActivity, "Facebook login failed", Toast.LENGTH_LONG);
                                //progress.dismiss();
                                toast.show();
                            } 
                            else if (user.isNew()) 
                            {
                                Log.d("MyApp", "User signed up and logged in through Facebook!");
                                Intent mainPage = new Intent(thisActivity, MainPage.class);
                                DBAdapter db = new DBAdapter(context);
                                db.open();
                                db.setLoginStatus(DBAdapter.LOGEDIN);
                                db.close();
                                //progress.dismiss();
                                thisActivity.startActivity(mainPage);

                            } 
                            else 
                            {
                                Log.d("MyApp", "User logged in through Facebook!");
                                Intent mainPage = new Intent(thisActivity, MainPage.class);
                                DBAdapter db = new DBAdapter(context);
                                db.open();
                                db.setLoginStatus(DBAdapter.LOGEDIN);
                                db.close();
                                //progress.dismiss();
                                thisActivity.startActivity(mainPage);
                            }
                        }
                    });
            }
         });
不知道这是否重要,但以下是关于活动结果的
代码:

 @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data)
     {
         super.onActivityResult(requestCode, resultCode, data);
         Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
         ParseFacebookUtils.finishAuthentication(requestCode, resultCode, data);
     }
我正在使用facbook 3.0 sdk和parse 1.3 sdk版本

编辑 *编辑:* 我想我找到了问题的根源,当我试图访问
ParseFacebookUtils
logIn
声明时,我得到了这个页面:类文件编辑器(
这个类文件的jar属于容器“安卓依赖项”,它不允许修改其条目上的源附件。
)。 此外,我还将parse sdk版本从1.2.4更新为1.3,从libs中删除旧sdk,并添加新sdk及其内容(总共4个文件和文件夹)


谢谢。

第二个和最后一个else子句中列出了崩溃的可能原因。您正试图在UI线程上执行某些数据库操作,该线程被非法引用,并在Android>=4.0上引发异常。这种类型的操作应该在不同的线程上完成,使用或可以完成这些操作

Vlad。 您的onActivityResult必须是:

   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        ParseFacebookUtils.finishAuthentication(requestCode, resultCode, data);
    }
原因
Session.getActiveSession()
返回null,原因是解析管理会话本身

别忘了在初始化解析中添加FACEBOOK_APP_ID:

public class ParseApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        // Add your initialization code here
        Parse.initialize(this, Constants.APPLICATION_ID, Constants.CLIENT_KEY);
        ParseFacebookUtils.initialize(Constants.FACEBOOK_APP_ID);

    }

}

如果没有显示任何消息,您如何知道应用程序是否已崩溃?应用程序只是关闭,没有给出任何错误(消失)。@Vlad Ioffe我可以问一下具体的解决方案供参考。你到底对清单做了什么?@Ivancho我不记得了,我想这是安卓系统的问题:noHistory=“true”
。我想我删除了它,它工作得很好。也许这是一个问题,但在调试程序时,它从来没有到达第一个
if
语句。