如果我使用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
答案 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");