在C#中创建Facebook事件返回#100无效参数

时间:2011-06-18 05:34:59

标签: c# json facebook facebook-graph-api webclient

我正在尝试整理一个小应用程序,这将允许我在Facebook上创建活动。我已经设置了我的Facebook应用程序,并使用下面的代码通过应用程序成功测试了我的Feed中的帖子。

wc.UploadString("https://graph.facebook.com/me/feed", "access_token=" + AccessToken + "&message=" + Message);

当我尝试将事情带到下一步时,我只是碰到了一堵砖墙。

我写的代码在这里:

JavaScriptSerializer ser = new JavaScriptSerializer();
wc.UploadString("https://graph.facebook.com/me/events?" + "access_token=" + AccessToken, ser.Serialize(rawevent));

rawevent是我编写的一个小对象,它将事件的元素组合在一起,以便我可以将它传递给我的应用程序。  我正在使用类似的方法使用ser.Deserialize来解析从Facebook返回的用户数据,所以我认为这也应该是另一种方式。

暂时搁置上面的代码,我也试过简单地将纯文本放在那里以各种格式和不同的参数级别,似乎没有任何效果。

我接近这个的方式有什么问题吗?我已经阅读了我可以得到的所有内容,而且很少有我能找到的样本可以创建事件,当他们这样做时,他们不在C#中。

我将不胜感激任何帮助。如果您只是拥有一份JSON代码的干净副本,我可以查看并查看应该调整的地方,我将不胜感激。

我已经在下面列出了ser.Serialize(rawevent)调用产生的副本:

{"name":"Dev party!","start_time":"1308360696.86778","end_time":"1310952696.86778","location":"my house!"}

编辑:

感谢下面的bronsoja,我使用下面的代码成功将活动发布到Facebook!

            System.Collections.Specialized.NameValueCollection nvctest = new System.Collections.Specialized.NameValueCollection();
            nvctest.Add("name", "test");
            nvctest.Add("start_time", "1272718027");
            nvctest.Add("end_time", "1272718027");
            nvctest.Add("location", "myhouse");
            wc.UploadValues("https://graph.facebook.com/me/events?" + "access_token=" + AccessToken, nvctest);

2 个答案:

答案 0 :(得分:1)

FB文档中的图表api示例中的所有发布示例都显示使用curl -F,它表示将值作为普通表单数据进行POST。就像你在第一个例子中所做的那样,只是键值对。

错误可能是由于发送JSON。如果您使用的是WebClient,则可以使用您的数据创建NameValueCollection,并使用WebClient.UploadValues发送请求。

答案 1 :(得分:0)

我最近发现Facebook返回(#100)当我们尝试发布具有相同名称的文件记录时的数据时参数无效。例如,如果您通过API创建一个FriendList,并且名称为“foo”,则提交另一个相同名称的相同请求将立即返回该错误。

在测试活动中,您可能删除了“开发方!”每次测试后的事件,或者可能更改时间,因为您不希望两个事件发生冲突。但是我想知道你是否复制了你的wc.UploadValues(...)语句,如果你再次看到错误就作为测试。您要么删除'test'事件,要么更改名称,并且没有注意到同名的两个事件可能会返回错误。

这里真正糟糕的是错误以OAuthException的形式返回,这看起来非常错误。这不是身份验证或授权问题,而是纯粹的数据问题。

Facebook工程师,如果我对这是如何工作正确的话,在这些条件下返回此错误是一个错误,这个论坛有很多相关混淆的例子。请返回更合适的错误。