【问题标题】:How to get user's friends, from facebook, and send them all messages, by using C# Facebook SDK?如何使用 C# Facebook SDK 从 facebook 获取用户的朋友并向他们发送所有消息?
【发布时间】:2014-11-18 06:56:41
【问题描述】:

我正在编写库,它将提供接口,用于从 facebook 获取用户的朋友,并使用 C# Facebook SDK 向他们发送所有消息('如何发送消息',我在这里看到了一些主题,所以这不是主要的现在,我需要获取用户朋友)。

所以我创建应用程序,添加 Facebook 库,在 Facebook 上创建应用程序并获取 APP_ID 和 APP 密码。

我在第三天尝试使用他们的文档来编写 somting。这就是我得到的:

        var fb = new FacebookApp("My_APP_Id", "MySecret");
        var accessToken = fb.Session.AccessToken;

        var app = new FacebookApp(accessToken);
        var result = (JsonObject)app.Get("/HereMyId/friends");
        var model = new List<Friend>();

        foreach (var friend in (JsonArray)result["data"])
            model.Add(new Friend()
                          {
                              Id = (string) (((JsonObject) friend)["id"]),
                              Name = (string) (((JsonObject) friend)["name"])
                          });
        text.Text += "<br/>";
        foreach (Friend res in model)
        {
            text.Text += res.Id + "<br/>";
            text.Text += res.Name + "<br/>";
        }
public class Friend
{
    public string Id { get; set; }
    public string Name { get; set; }
}

我有下一个错误:

无法查找 100002435634 的所有好友。只能查找已登录用户 (0) 或具有相应权限的登录用户的好友。

我应该如何登录用户?也许我不明白它应该如何工作。

所以我有几个问题:

  1. 我可以获取用户的登录和通行证并以某种方式连接,或者我可以授予应用程序一些权限,或者它应该如何工作?

  2. 如何从 facebook 获取有关朋友的信息?

【问题讨论】:

  • 你的拼写很糟糕。你能把它清理一下吗?
  • 我不是 100% 但您可能还需要使用“/me/friends”而不是 ID

标签: c# facebook sdk get


【解决方案1】:

您的 Facebook 应用程序注册必须明确声明您需要permission to read 好友列表。身份验证期间所需的权限为passed in using the scope parameter

【讨论】:

    【解决方案2】:

    我知道我可能迟到了一年,但由于我遇到了同样的问题并利用了你的代码并有机会为你的目的工作,所以我返回了那些可能遇到同样问题的人的工作代码。这是最初属于您的已编辑代码。

    public void ShowFriendList(string at, string id)
    {
        //var fb = new FacebookApp("My_APP_Id", "MySecret");
        var accessToken = at;
    
        Facebook.FacebookClient app = new Facebook.FacebookClient(accessToken);
        var result = (Facebook.JsonObject)app.Get("/" + id + "/friends");
        var model = new List<fbUser>();  //model = friendlist array
        int i = 5; //limit to five friends
    
        foreach (var friend in (Facebook.JsonArray)result["data"])
        {
            if (i != 0)
            {
                model.Add(new fbUser()
                {
                    ID = (string)(((Facebook.JsonObject)friend)["id"]),
                    Name = (string)(((Facebook.JsonObject)friend)["name"])
    
    
                });
                i = i - 1;
            }
            else
            {
                break;
            }
        }
        lblreport.Text += "<br/>";
        foreach (fbUser res in model)
        {
            lblreport.Text += res.ID + "<br/>";
            lblreport.Text += res.Name + "<br/>";
        }
       }
    

    我只是分别用 lblreport 标签和 fbUser 类替换了文本输出控件和 Friend 类,如果你喜欢的话,把它们替换回来。

    您唯一错过的是您使用应用程序 access_token 而不是您计划的登录用户的 access_token。否则,您的代码是从 Facebook Json 对象中提取朋友列表的绝佳示例,这正是我最初所追求的。我希望这有帮助。 PS:这是我第一次回答 stackoverflow,所以我希望我能为这个伟大的资源网站做出贡献。

    【讨论】:

    • 您使用的是哪个 Facebook SDK?我无法在我的 Facebook Json 对象中找到
    【解决方案3】:
    var client = new FacebookClient(access_token);
    var result = client.Get("/me/friends?fields=picture,name") as JsonObject;
    JavaScriptSerializer js = new JavaScriptSerializer();
    string str = result ["data"].ToString();
    List<Friends> objFriends = (List<Friends>)js.Deserialize(str, typeof(List<Friends>));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      相关资源
      最近更新 更多