如何通过使用C#Facebook SDK获取用户的朋友,从Facebook发送所有消息?

时间:2011-05-25 12:59:34

标签: c# facebook sdk get

我正在编写libraty,这将通过使用C#Facebook SDK('如何发送消息',我会在这里看到一些主题,因此这不是主要内容来为来自Facebook的用户朋友提供interfase并发送所有消息现在,我需要得到用户朋友)。

所以我创建应用程序,添加Facebook Libreary,在Facebook上创建应用程序并获得APP_ID和APP秘密。

我尝试第3天使用他们的文档来编写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获取有关朋友的信息?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我知道我可能会迟到一年但是因为我遇到了同样的问题,并且利用了你的代码并且有可能为你的目的而工作,我回来时为那些可能来这里遇到同样问题的人提供了工作代码。以下是最初由您编辑的代码。

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,所以我希望我能为这个优秀的资源网站做出贡献。

答案 2 :(得分:0)

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>));