我开发了一个通过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:没有图片的值
答案 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");