C# 通过facebook页面创建活动的桌面应用程序

C# 通过facebook页面创建活动的桌面应用程序,c#,facebook,events,desktop-application,C#,Facebook,Events,Desktop Application,我有一个facebook fanpage,我正在尝试制作一个桌面应用程序,它可以通过这个fanpage创建事件,但是我很难理解这个故事是如何通过acces令牌、id、用户权限进行的。。。如果我没有弄错,一旦我有了accesstoken,我可以使用codeplex中的facebookSDK和以下函数创建一个事件: public string CreateEvent(string accessToken) { FacebookClient facebookCl

我有一个facebook fanpage,我正在尝试制作一个桌面应用程序,它可以通过这个fanpage创建事件,但是我很难理解这个故事是如何通过acces令牌、id、用户权限进行的。。。如果我没有弄错,一旦我有了accesstoken,我可以使用codeplex中的facebookSDK和以下函数创建一个事件:

public string CreateEvent(string accessToken)
        {
            FacebookClient facebookClient = new FacebookClient(accessToken);
            Dictionary<string, object> createEventParameters = new Dictionary<string, object>();
            createEventParameters.Add("name", "My birthday party )");
            createEventParameters.Add("start_time", DateTime.Now.AddDays(2).ToUniversalTime().ToString());
            createEventParameters.Add("end_time", DateTime.Now.AddDays(2).AddHours(4).ToUniversalTime().ToString());
            createEventParameters.Add("owner", "Balaji Birajdar");
            createEventParameters.Add("description", " ( a long description can be used here..)");

            //Add the "venue" details
            JsonObject venueParameters = new JsonObject();
            venueParameters.Add("street", "dggdfgg");
            venueParameters.Add("city", "gdfgf");
            venueParameters.Add("state", "gfgdfgfg");
            venueParameters.Add("zip", "gfdgdfg");
            venueParameters.Add("country", "gfdgfg");
            venueParameters.Add("latitude", "100.0");
            venueParameters.Add("longitude", "100.0");
            createEventParameters.Add("venue", venueParameters);

            createEventParameters.Add("privacy", "OPEN");
            createEventParameters.Add("location", "fhdhdfghgh");

            Add the event logo image
            FacebookMediaObject logo = new FacebookMediaObject()
            {
                ContentType = "image/jpeg",
                FileName = @"C:\logo.jpg"
            };
            logo.SetValue(File.ReadAllBytes(logo.FileName));
            createEventParameters["@file.jpg"] = logo;

            JsonObject resul = facebookClient.Post("/me/events", createEventParameters) as JsonObject;
            return resul["id"].ToString();
        }
我这样试过,但显然不起作用

所以我的问题是:

我总是需要申请吗?如果是,如何将其连接到现有的风扇页面? 我在哪里设置我的用户权限?然后如何使用该用户登录

我只是觉得文档有点模糊:It’如果我的问题很愚蠢,那很抱歉


欢迎提供任何帮助/伪代码

我正在使用BatchFB在应用程序引擎应用程序中创建事件,它适合我,下面是代码

  // Some Date math that is from my App, but I am using Joda DateTime for output
  // formatting.. I have found that if the start_time is malformed by FB standards it will 
  // to create an event, and give you an eventid, but the event never really gets created.
  long    hour = { your data }
  DateTime start_time = new DateTime(d).plusHours((int)hour);
  String stime = start_time.toString(ISODateTimeFormat.dateTime());

  Batcher batcher = new FacebookBatcher(token);
  Later<NewFeedItem> event = batcher.post(
      "/events", NewFeedItem.class,
      new Param("name", edata.getStringProperty(EventData.Schema.Name)),
      new Param("start_time", stime )
  );
  long eventid = event.get().id;
//来自我的应用程序的一些日期数学,但我使用Joda DateTime作为输出
//格式化。。我发现,如果开始时间的格式不符合FB标准,它将
//创建一个事件,并为您提供一个eventid,但该事件从未真正被创建。
长时间={您的数据}
DateTime start_time=新的DateTime(d).plusHours((int)小时);
String stime=start_time.toString(ISODateTimeFormat.dateTime());
Batcher Batcher=新的FacebookBatcher(令牌);
后期事件=batcher.post(
“/events”,NewFeedItem.class,
新参数(“name”,edata.getStringProperty(EventData.Schema.name)),
新参数(“开始时间”,时间)
);
long eventid=event.get().id;
我使用FBJS在客户端生成令牌,并将其传递给服务器

NewFeedItem只是一个定义长变量的类,请参见batchFB的站点

话虽如此,我正在考虑切换到RestFB,因为我无法让BatchFB通过尝试发布图像来支持二进制参数。RestFB的文档记录也更好。。他们似乎是相关的项目,经常互相提及

我还没有添加场馆数据,但我已经读到GraphAPI要工作,它们必须是顶级参数。i、 e.添加与位置和隐私相同级别的街道、城市、州。。 当您尝试读取事件时,它将出现在场馆参数中,但创建时需要是顶级的。。还可以回退到只使用name和start_time,这是唯一需要的参数,并在工作后添加到其中

-约翰·詹蒂林

  // Some Date math that is from my App, but I am using Joda DateTime for output
  // formatting.. I have found that if the start_time is malformed by FB standards it will 
  // to create an event, and give you an eventid, but the event never really gets created.
  long    hour = { your data }
  DateTime start_time = new DateTime(d).plusHours((int)hour);
  String stime = start_time.toString(ISODateTimeFormat.dateTime());

  Batcher batcher = new FacebookBatcher(token);
  Later<NewFeedItem> event = batcher.post(
      "/events", NewFeedItem.class,
      new Param("name", edata.getStringProperty(EventData.Schema.Name)),
      new Param("start_time", stime )
  );
  long eventid = event.get().id;