【问题标题】:Desktop app to create event through a facebook page通过 facebook 页面创建事件的桌面应用程序
【发布时间】:2012-01-04 13:14:31
【问题描述】:

我有一个 facebook 粉丝页面,我正在尝试制作一个可以通过这个粉丝页面创建事件的桌面应用程序,但是我无法理解故事如何与访问令牌、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();
        }

我是否总是需要应用程序来执行此操作?

我有一个测试应用程序,我可以使用以下方法从中获取访问令牌:

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

我试过这样,但显然没有用。

所以我的问题:

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

我只是觉得文档有点含糊:s 对不起,如果我的问题很愚蠢。

感谢任何帮助/伪代码!

【问题讨论】:

    标签: c# facebook events desktop-application


    【解决方案1】:

    我正在使用 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在客户端生成token,然后传给服务器。

    NewFeedItem 只是一个定义长变量的类,请参阅 batchFB 的网站..

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

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

    -约翰·根蒂林

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 2011-08-04
      相关资源
      最近更新 更多