我刚开始研究Parse API,我发现在我的测试设备和模拟器上,facebook集成没有按预期工作。
在一个onClickListener中,我用Facebook帐户登录:
...SignInActivity.onCreate()....
List<String> permissions = Arrays.asList("public_profile", "user_friends", "user_about_me",
"user_relationships", "user_birthday", "user_location");
ParseFacebookUtils.logIn(permissions, SignInActivity.this, new LogInCallback() {
@Override
public void done(ParseUser user, ParseException err) {
progressDialog.dismiss();
if (user == null) {
Log.d("Parse",
"Uh oh. The user cancelled the Facebook login.");
} else if (user.isNew() && err == null) {
Log.d("Parse",
"User signed up and logged in through Facebook!");
startActivity(new Intent(SignInActivity.this, MainActivity.class));
} else if (err == null) {
Log.d("Parse",
"User logged in through Facebook!");
startActivity(new Intent(SignInActivity.this, MainActivity.class));
} else {
Log.d("Parse", "Login err: "+err.getMessage());
}
}
});
我确实检查了err是否为null,并且此步骤正确登录用户。
然后它将我发送到MainActivity,但当我退出应用程序并再次打开它时,
....at the end of SignInActivity.onCreate()...
ParseUser currentUser = ParseUser.getCurrentUser();
if ((currentUser != null) && ParseFacebookUtils.isLinked(currentUser)) {
startActivity(new Intent(this, MainActivity.class));
} else {
Log.d("Logging in with Facebook", "User not logged in. (currentUser != null) = " + (currentUser != null));
}
告诉我getCurrentUser()返回了null。
在Application.onCreate()中,我有以下代码来设置Parse和ParseFacebookUtils。
Parse.initialize(this, "xxxx",
"xxxxx");
Parse.enableLocalDatastore(this);
ParseFacebookUtils.initialize(getString(R.string.app_id));
super.onCreate();
我使用的是facebook sdk v3.15.0和Parse 1.5.1
这是已知的问题还是我遗漏了什么?
谢谢你的帮助!
这是一个已知的Parse 1.5.1错误,如下所述:https://developers.facebook.com/bugs/229876443869758/
目前有一个解决方法:尝试禁用本地数据存储。