如何从ParseUser对象获取authData信息?

时间:2014-07-03 18:27:33

标签: android parse-platform

如果我使用ParseFacebookUtils.logIn()登录,我会得到一个ParseUser实例。调试,我可以检查一个authData JSON字段,它包含一些键:id,access_token,expiration_date ... 但是,如何从代码中获取authData JSON信息?我已经尝试过parseUser.getJSONObject(“facebook”),parseUser.getJSONObject(“authData”)等,但没有任何作用。

文档没有说明:https://parse.com/docs/android/api/com/parse/ParseUser.html

4 个答案:

答案 0 :(得分:1)

由于您能够看到所需的JSON字段,我相信ParseFacebookUtils正在成功登录。一旦login()回调返回user不为null,请在Callback中执行此操作。

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

    }
}); 

确保添加正确的导入。对于电子邮件,您需要在登录时询问权限。

答案 1 :(得分:0)

假设您正在使用解析facebook登录: 首次登录Facebook后

logInWithReadPermissionsInBackground ... bla bla bla

然后:

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");

抱歉错误的变量命名;)

答案 2 :(得分:-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元素名称,只使用它们而不是你使用的,你应该很好。不是'facebook'而是http响应中的名称,如'objectId'。

您必须知道实际的JSON元素名称......

通过更密切地阅读文档或使用WIRE调试http流量来获得它。

答案 3 :(得分:-1)

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

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

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