在android中获取Facebook个人资料数据的问题

时间:2014-04-16 07:40:00

标签: android facebook facebook-graph-api android-facebook

我开发了一个通过Facebook sdk拥有Facebook登录工具的应用程序,我正在查找用户配置文件数据,如用户名,ID,位置,个人资料图片,生日,电子邮件ID,所以我得到了所有数据,但在获取个人资料图片时遇到问题路径所以我的代码出了什么问题

代码

mAsyncRunner.request("me", new AsyncFacebookRunner.RequestListener() {
   @Override
   public void onComplete(String response, Object state) {
      Log.d("Profile", response);
      String json = response;
      try {
          JSONObject profile = new JSONObject(json);
          final String name = profile.getString("name");
          final String sex = profile.getString("gender");
          final String id = profile.getString("id");
          final String email = profile.getString("email");
          final String location = profile.getJSONObject("location").getString("name");
          final String birthday = profile.getString("birthday");
          final String picture = profile.getString("picture");

          Log.i("=-=-=-=-=-=-=-=-=-=-=-=-=-",name+ "-------"+sex+"---------" +id+"---------"+email+"---------"+location+"---------"+birthday+"---------"+picture +"---------");
      } catch (JSONException e) {
          e.printStackTrace();
      }
}

得到错误: - org.json.JSONException:没有图片的值

1 个答案:

答案 0 :(得分:0)

要获取picture网址,您无需从图谱API中获取此内容(我认为picture字段无效),您可以随时使用此网址 -

https://graph.facebook.com/{user-id}/picture

查看this doc了解更多信息。

所以只需从代码中删除此行(因为json中不存在picture键) -

final String picture = profile.getString("picture");

获取位图 -

URL imgUrl = new URL("http://graph.facebook.com/{user-id}/picture?type=large");
InputStream in = (InputStream) imgUrl.getContent();
Bitmap  bitmap = BitmapFactory.decodeStream(in);

修改

如果特别需要图片网址(不推荐也不需要) -

final String picture = 
        profile.getJSONObject("picture").getJSONObject("data").getString("url");