我有一个Facebook粉丝页面,我正在尝试创建一个可以通过此粉丝页面创建活动的桌面应用程序,但是我无法理解故事如何与访问令牌,ID,用户权限...一旦我有了accessstoken,我就没错了我可以使用来自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();
}
我是否总是需要一个应用程序来执行此操作?
我有一个测试应用程序,我可以使用以下方法从中获取访问令牌:
public string getToken(string strURL)
{
string strURL = "https://graph.facebook.com/oauth/access_token?client_id=149585851811979&client_secret=blablablablabalalbal&grant_type=client_credentials";
Uri Uri = new Uri(strURL);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Uri);
HttpWebResponse HWResponse = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(HWResponse.GetResponseStream());
string token = sr.ReadToEnd();
sr.Close();
token = token.Replace("access_token=", "");
return token;
}
我试过这样但显然没有用。
所以我的问题:
我是否总是需要申请?如果是,我如何将其连接到我现有的粉丝页面? 我在哪里设置用户权限?然后我如何与用户一起登录?
我只是认为文档有点含糊:如果我的问题很愚蠢,我很抱歉。
感谢任何帮助/伪代码!
答案 0 :(得分:0)
我正在使用BatchFB在App Engine应用程序中创建事件,它适用于我,这里是代码
// 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;
我使用FBJS在客户端生成令牌,并将其传递给服务器。
NewFeedItem只是一个定义long变量的类,请参阅batchFB的站点..
话虽如此,我正在考虑切换到RestFB,因为我无法通过尝试发布图像来让BatchFB支持二进制参数。 RestFB也更好地记录了......它们似乎是相关的项目,经常互相引用。
我还没有添加Venue数据,但我已经读过要使GraphAPI工作,它们需要是顶级参数。即加入街道,城市,州与地点和隐私相同的水平。 当您尝试读取事件时,它将出现在场地参数中,但它在创建时需要处于最高级别。还可以回退到仅使用name和start_time,这是唯一必需的参数,并在它工作后添加到该参数。
-John Gentilin