Android应用:提前发送帖子给用户的朋友而不知道其ID

时间:2012-10-11 16:05:13

标签: android facebook sendmessage

我希望我的应用程序能够将一些文本发送到朋友的Facebook墙上。 这是我到目前为止所拥有的,

    private void postOnFriendsWall() {
            Bundle params = new Bundle();
            params.putString("to", ""); 
            facebook.dialog(this, "feed", params, new DialogListener()

它可以向我自己的墙发送消息。 我试图通过让id参数为空来显示所有朋友,但它不起作用,它只能让我在我自己的墙上发布。是否有一个Facebook对话框,用户可以选择要将消息发送给谁?

我已经看到了其他答案,这很容易做,但只有当你知道提前知道朋友的身份证时。 我不知道我的应用程序用户的朋友ID,所以如何动态获取列表?

编辑:我认为如果我描述了我想要的流程,它会让我的问题更清楚:

  1. 用户在我的应用上登录Facebook(已完成)
  2. 通过点击按钮,用户可以选择他想要发送消息的人(我不知道如何使用此消息)
  3. 用户发送消息

1 个答案:

答案 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){
    //
}
};