【问题标题】:Android app: send post to a user's friend without knowing its id in advanceAndroid 应用程序:在不知道其 ID 的情况下将帖子发送给用户的朋友
【发布时间】:2012-10-11 16:05:13
【问题描述】:

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

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

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

我看到了其他很容易做到的答案,但前提是您事先知道朋友的 ID。 我不知道我的应用用户的好友id,如何动态获取列表?

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

  1. 用户在我的应用上登录 Facebook(完成)
  2. 通过点击一个按钮,用户可以选择他想向谁发送消息(我不知道如何设置)
  3. 用户发送消息

【问题讨论】:

  • 我怀疑这是否可能。我已经尝试过一段时间但失败了。
  • 嘿 Enigma,感谢您的意见,我已经做了很多研究,确实没有什么可以做的。不过,我不明白为什么这是不可能的。你知道这是否是 Facebook 的政策规定吗?

标签: android facebook sendmessage


【解决方案1】:

您可以使用图形 api 简单地做到这一点。 你要做的就是

1) 获取好友列表(包含姓名和 Facebook ID)

2) 使用graph api和“FriendID/feed”作为graph URL发出“POST”请求


以下是我的代码。在使用我的代码之前,您应该尝试更多地了解图形 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){
    //
}
};

【讨论】:

  • 感谢您的帮助,您有任何教程如何实现这一点吗?一些代码和更多细节将不胜感激。
  • 通过学习facebook-android-sdk中的简单示例,尝试学习如何使用graph api。欢迎接受我的回答。
  • 谢谢,我现在没有时间测试它,但我绝对可以从它开始
  • 您应该知道此功能很快就会消失,请参阅developers.facebook.com/blog/post/2012/10/10/… .. “我们将删除通过 Graph API 向用户朋友的墙发帖的功能。如果您想允许人们发布到他们朋友的时间线,调用提要对话框。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-04
  • 1970-01-01
  • 2014-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多