我在我的应用程序中从Parse.com实现facebook登录时遇到了一些奇怪的行为。以下是如何使用样本中的Blank Facebook App示例代码复制它:
我想创建一个与当前用户关联的新“帖子”。在UserDetailsActivity的onCreate()结束时,我添加了:
ParseObject post = new ParseObject("Post");
post.put("name", "New post");
post.put("user", ParseUser.getCurrentUser());
post.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e != null) {
e.printStackTrace();
}
}
});
在我在Application中启用localDataStore之前,这项工作非常顺利。上面的代码返回:
com.parse.ParseException : java.lang.IllegalArgumentException : Cannot save a ParseUser until it has been signed up. Call signUp first.
注意:在ParseFacebookUtils.logIn()的回调中返回的与ParseUser关联的数据为null(objectId,username,..),这解释了上述行为。
问题是:为什么要添加
Parse.enableLocalDatastore(this);
到应用程序让facebook登录返回一个空的ParseUser?
每两次发布会发生一次错误:
我正在使用Parse 1.5.0& Facebook SDK 3.14。
答案 0 :(得分:0)
ParseUser.getCurrentUser()
很可能按https://parse.com/docs/android/api/com/parse/ParseUser.html#getCurrentUser()返回null。您可能希望首先登录facebook,然后尝试使用ParseUser
ParseFacebookUtils.logIn(getActivity(), new LogInCallback() {
@Override
public void done(ParseUser user, ParseException err) {
if(user != null) {
// use ParseUser here
}
}
});
此外,我不建议将Parse 1.5.0与facebook SDK 3.14版一起使用。 Parse https://www.parse.com/docs/android_guide#fbusers的文档指出“Parse与Facebook SDK for Android的v3.0兼容”。我的经历让我相信他们不是在撒谎。