在Android上使用facebook登录Parse.com(奇怪的崩溃)
我正在使用parse.com,我正在尝试登录facebook。 在登录过程完成并调用回调之前,一切都会顺利运行。发生的情况是(FB登录过程完成后)应用程序崩溃,崩溃时没有显示消息,logcat也没有显示任何信息。我完全迷路了 这是我的密码:在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
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
语句。