如何使用C#Facebook SDK从Facebook获取用户的朋友,并将所有消息发送给他们?

问题描述

| 我正在写书本,这将为从Facebook获取用户的朋友提供便利,并通过使用C#Facebook SDK向他们发送所有消息(“如何发送消息”,我在这里看到了一些主题,因此目前,这还不是主要的,我需要结交用户朋友)。 因此,我创建了应用程序,添加了Facebook库,在Facebook上创建了应用程序,并获得了APP_ID和APP机密。 我尝试使用他们的文档在第三天写草皮。那就是我得到的:
        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)或具有适当权限的登录用户的朋友。 我应该如何登录用户?也许我不知道它应该如何工作。 所以我有几个问题: 我可以接受用户登录和通过并连接一些方法,或者可以授予应用程序一些权限,或者应该如何工作? 如何从Facebook获得有关朋友的信息?     

解决方法

您的Facebook应用程序注册必须明确声明您需要阅读朋友列表的权限。身份验证期间,使用scope参数传递所需的权限。     ,我知道我可能要迟到一年了,但是由于我遇到了同样的问题,并且利用了您的代码,并且有可能对您有用,所以我为那些可能遇到同样问题的代码返回了工作代码。这是原来由您编辑的代码。
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/>\";
    }
   }
我只分别将文本输出控件和Friend类分别替换为lblreport标签和fbUser类,如果需要,只需将其替换回去。 您唯一遗漏的是您按计划使用了应用程序access_token而不是登录用户的access_token。否则,您的代码是从Facebook Json Object提取好友列表的绝佳示例,这是我最初追求的目标。我希望这有帮助。 PS:这是我第一次回答stackoverflow,所以我希望我对这个强大的资源站点有所帮助。     ,
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>));
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...