我希望我的应用程序能够将一些文本发送到朋友的Facebook墙上。 这是我到目前为止所拥有的,
private void postOnFriendsWall() {
Bundle params = new Bundle();
params.putString("to", "");
facebook.dialog(this, "feed", params, new DialogListener()
它可以向我自己的墙发送消息。 我试图通过让id参数为空来显示所有朋友,但它不起作用,它只能让我在我自己的墙上发布。是否有一个Facebook对话框,用户可以选择要将消息发送给谁?
我已经看到了其他答案,这很容易做,但只有当你知道提前知道朋友的身份证时。 我不知道我的应用程序用户的朋友ID,所以如何动态获取列表?
编辑:我认为如果我描述了我想要的流程,它会让我的问题更清楚:
答案 0 :(得分:1)
您可以使用graph api完成此操作。 你要做的是
1)获取好友列表(包含姓名和Facebook ID)
2)使用图表api和“FriendID / feed”作为图表网址发出“POST”请求
以下是我的代码。在使用我的代码之前,您应该尝试了解有关graph api和JSONObject的更多信息。
1)获取好友列表
public JSONArray GetFriendList(){
Bundle params = new Bundle();
String resp="";
JSONArray resp_json=null;
try {
resp = fb.request("me/friends", params, "GET");
resp_json=new JSONArray(resp);
} catch (FileNotFoundException e) {
//...
} catch (MalformedURLException e) {
//...
} catch (IOException e) {
//...
}catch(JSONException e){
//...
}
return resp_json;//JSONArray of friend list, try to use debug mode to browse the content and parse it yourself,get a JSONObject from the JSONArray and get the user ID of that JSONObject
};
2)发布朋友墙
public String PostWall(String Message,int Level,String FriendID){
//FriendID can be grepped form the function above
|/*REMARK:Privacy Level
* level 0 ==>only me
* level 1==>friend only
* level 2==>public
*/
Bundle params = new Bundle();
params.putString("message", Message);
JSONObject privacy = new JSONObject();
try {
switch (Level){
case 0:
privacy.put("value", "SELF");
break;
case 1:
privacy.put("value", "ALL_FRIENDS");
break;
case 2:
privacy.put("value", "EVERYONE");
break;
}
} catch (JSONException e1) {
//
}
params.putString("privacy", privacy.toString());
String resp= "";
try {
resp = fb.request(FriendID+"/feed", params, "POST");
} catch (FileNotFoundException e) {
} catch (MalformedURLException e) {
} catch (IOException e) {
}
try{
resp = new JSONObject(resp).getString("id");
return resp;//The post ID
}catch(JSONException e1){
//
}
};