簡體   English   中英

解析:Facebook登錄名和localDataStore

[英]Parse : Facebook login and localDataStore

在我的應用程序中從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();
        }
    }           
});

在我在應用程序中啟用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?

每兩次啟動都會發生此錯誤:

  • 首次啟動時,沒有有效的當前用戶存儲在offlineStore數據庫中,facebook登錄成功添加了一個,一切正常
  • 第二次啟動時,已經存儲了一個有效的用戶,將其替換為沒有objectId或數據的“ OfflineObject”用戶,從而導致上述錯誤。

我正在使用Parse 1.5.0和Facebook SDK 3.14。

根據https://parse.com/docs/android/api/com/parse/ParseUser.html#getCurrentUser()ParseUser.getCurrentUser()很可能返回null。 您可能想要先進行Facebook登錄,然后嘗試使用ParseUser

ParseFacebookUtils.logIn(getActivity(), new LogInCallback() {
    @Override
    public void done(ParseUser user, ParseException err) {
        if(user != null) {
            // use ParseUser here
        }
    }
});

另外,我不建議在Facebook SDK的3.14版中使用Parse 1.5.0。 用於Parse的文檔https://www.parse.com/docs/android_guide#fbusers聲明“ Parse與適用於Android的Facebook SDK v3.0兼容”。 我的經歷使我相信他們沒有說謊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM