2014-07-03 24 views
1

如果我使用ParseFacebookUtils.logIn()登錄,我會得到一個ParseUser實例。調試,我可以檢查一個authData JSON字段,它包含一些鍵:id,access_token,expiration_date ... 但是,如何從代碼中獲取authData JSON信息?我試過parseUser.getJSONObject(「Facebook」),parseUser.getJSONObject(「authData」)等,但沒有任何作品。如何從ParseUser對象獲取authData信息?

文件說什麼:​​

回答

1

由於您能夠看到必需的JSON字段,我相信ParseFacebookUtils正在成功登錄。一旦login()回調返回user不爲null,請在回調中執行此操作。

Request.executeMeRequestAsync(Session.getActiveSession(), new Request.GraphUserCallback() { 
// callback after Graph API response with user object 
    @Override 
    public void onCompleted(GraphUser user, Response response) {    
    String fullName = user.getName(); 
    String email = user.getProperty("email").toString(); 
    String facebookId = user.getId(); 

    //Do whatever you want 

    } 
}); 

確保添加正確的導入。而對於電子郵件,就必須請求允許在登錄時

+0

謝謝!這似乎是獲得它的一種方式。很遺憾,我必須爲Parse已經下載的數據創建另一個異步請求(但存儲在私有字段中)。我現在要用這個解決方案,但我擔心,因爲executeMeRequestAsync()是一個不推薦的方法:-( – thelawnmowerman

+0

我不知道我們是否可以避免另一個請求,但嘗試使用Request.newMeRequest而不是executeMeRequestAsync。:) – Vij

-1

響應登錄是在用戶登錄休息的文檔部分,如下所示:

"username": "cooldude6", 
    "phone": "415-392-0202", 
    "createdAt": "2011-11-07T20:58:34.448Z", 
    "updatedAt": "2011-11-07T20:58:34.448Z", 
    "objectId": "g7y9tkhB7O", 
    "sessionToken": "pnktnjyb996sj4p156gjtp4im" 

在REST API,它可以消耗如下:

mBmpNode= new ObjectMapper().readValue(new ByteArrayInputStream(response), 
JsonNode.class); 
str_id = mBmpNode.path("objectId").getTextValue(); // or 'sessionToken', 'username' 

看看這些JSON元素名稱,只是使用它們而不是你用過的東西,你應該很好。不是'臉譜',而是像'objectId'這樣的http響應中的名字。

你必須知道實際的,JSON元素名稱...

獲得通過更緊密地閱讀文檔,或通過使用HTTP流量的線調試。

+0

對不起,但這個答案看起來像它與ParseFacebookUtils.logIn()無關。沒有'響應'參數,只有一個ParseUser和一個ParseException實例。我知道如何從JSON對象中獲取JSON字段,我的問題是如何獲得我首先需要的JSON對象。 – thelawnmowerman

-1
HashMap hash1 = (HashMap) parseUser.get("authData"); 

HashMap hash2 = (HashMap) hash1.get("facebook"); 

String id = hash2.get("id"); 
0

假設你正在使用的解析Facebook登錄: 登錄後與Facebook首次

logInWithReadPermissionsInBackground ...唧唧歪歪

然後:

ParseUser parseUser = ParseUser.getCurrentUser(); 
Map<String,Map> authObject = parseUser.getMap("authData"); 
Map<String,String> fbParseLoginData = (Map<String,String>) authObject.get("facebook"); 

String parseFacebookId = (String)fbParseLoginData.get("id"); 

String parseFacebookAuthData = (String)fbParseLoginData.get("access_token"); 

遺憾的壞變量命名)