Android 如何从ParseUser对象获取authData信息?
如果我使用ParseFacebookUtils.logIn()登录,我会得到一个ParseUser实例。在调试过程中,我可以检查一个authdatajson字段,该字段包含一些键:id、access\u token、expiration\u date。。。 但是,如何从代码中获取authdatajson信息?我尝试过parseUser.getJSONObject(“facebook”)、parseUser.getJSONObject(“authData”)等,但都不起作用Android 如何从ParseUser对象获取authData信息?,android,parse-platform,Android,Parse Platform,如果我使用ParseFacebookUtils.logIn()登录,我会得到一个ParseUser实例。在调试过程中,我可以检查一个authdatajson字段,该字段包含一些键:id、access\u token、expiration\u date。。。 但是,如何从代码中获取authdatajson信息?我尝试过parseUser.getJSONObject(“facebook”)、parseUser.getJSONObject(“authData”)等,但都不起作用 文档没有说明任何内容:
文档没有说明任何内容:对登录的响应在关于用户登录的Rest文档部分中,如下所示:
"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元素名称
通过更仔细地阅读文档或使用http通信的有线调试来实现这一点。由于您能够看到所需的JSON字段,我相信ParseFacebookUtils正在成功登录。一旦login()回调返回user not 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
}
});
确保添加正确的导入。对于电子邮件,您需要在登录时请求许可。假设您使用的是解析facebook登录:
HashMap hash1 = (HashMap) parseUser.get("authData");
HashMap hash2 = (HashMap) hash1.get("facebook");
String id = hash2.get("id");
首次登录facebook后
具有ReadPermissionsInBackground…布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉
然后:
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");
ParseUser ParseUser=ParseUser.getCurrentUser();
Map authObject=parseUser.getMap(“authData”);
Map fbParseLoginData=(Map)authObject.get(“facebook”);
String parseFacebookId=(String)fbParseLoginData.get(“id”);
String parseFacebookAuthData=(String)fbParseLoginData.get(“访问令牌”);
很抱歉变量命名错误;) 谢谢大家!!这似乎是得到它的一种方式。遗憾的是,我必须为已经下载(但存储在私有字段中)的数据解析发出另一个异步请求。现在我将使用此解决方案,但我很担心,因为executeMeRequestAsync()是一个不推荐使用的方法:-(我不知道是否可以避免另一个请求,但尝试使用request.newmereRequest而不是executeMeRequestAsync:)抱歉,但这个答案似乎与ParseFacebookUtils.logIn()无关。没有“response”参数,只有一个ParseUser和一个ParseException实例。我知道如何从JSON对象获取JSON字段,我的问题是如何首先获取我需要的JSON对象。