我想在android应用程序中显示包含姓名,身份证,生日,位置等信息的列表。
虽然下面的代码我得到了朋友的姓名和身份证,但我在工作中取得了成功。
Bundle parameters = new Bundle();
mAccessToken = facebook.getAccessToken();
try {
parameters.putString("format", "json");
parameters.putString(TOKEN, mAccessToken);
String url = "https://graph.facebook.com/me/friends";
String response = Util.openUrl(url, "GET", parameters);
JSONObject obj = Util.parseJson(response);
Log.i("json Response", obj.toString());
JSONArray array = obj.optJSONArray("data");
if (array != null) {
for (int i = 0; i < array.length(); i++) {
String name = array.getJSONObject(i).getString("name");
String id = array.getJSONObject(i).getString("id");
Log.i(name,id);
}
}
............
............
但不能在json响应中获取生日,位置等字段。 什么是错误?
答案 0 :(得分:9)
使用FQL语言快速获取所需的所有信息:
$this->api->api(array('method'=>'fql.query','query'=>"SELECT uid,name,first_name,middle_name,last_name,pic_square,hometown_location,current_location,profile_url,email,website FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())"));
有关具有相应列名的所有表的列表,请参阅:Facebook FQL Reference
答案 1 :(得分:6)
当我想获得我的朋友列表,并过滤他们的名字和网站时,这对我有用:https://graph.facebook.com/me/friends?fields=name,website&access_token=someCrazyLongRandomlyGeneratedString
似乎你应该这样做,你只需要将'name,website'替换为'name,id,birthday,location'或者你想要从响应中包含的字段列表中获得的任何内容。用户对象:http://developers.facebook.com/docs/reference/api/user/。我相信id会自动包含在响应中,因此您不必将其实际包含在请求中。
答案 2 :(得分:5)
Facebook API says FriendList
每个朋友只包含id
和name
。
我没有使用Facebook API,但我想然后你需要为每个用户查询https://graph.facebook.com/[id]
,根据需要插入他们的id,以返回所有可用的信息,然后分别解析每个用户的JSON响应(their docs并不是特别清楚)。
答案 3 :(得分:1)
使用此FQL调用可以检索用户朋友的姓名,ID,生日和位置:
SELECT uid,name, birthday_date, hometown_location
FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())
在Android上,使用Facebook Android SDK,可以实现:
String query = "SELECT uid,name,birthday_date, hometown_location FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) (SELECT uid2 FROM friend WHERE uid1=me())"
Bundle params = new Bundle();
params.putString("method", "fql.query");
params.putString("query", query);
mAsyncFacebookRunner.request(null, params, new FQLRequestListener())
其中FQLRequestListener扩展了RequestListener。
您需要这些权限:
friends_birthday
friends_hometown
答案 4 :(得分:0)
您已经接近它,请在网址中使用此项,请确保您拥有friends_birthday和friends_location的权限
String url = "https://graph.facebook.com/me/friends?fields=id,name,birthday,location";