Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从ParseUser对象获取authData信息?_Android_Parse Platform - Fatal编程技术网

Android 如何从ParseUser对象获取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”)等,但都不起作用 文档没有说明任何内容:

如果我使用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对象。