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