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

本文关键字:返回 #100 无效 参数 事件 Facebook 创建 | 更新日期: 2023-09-27 17:59:32

我正在尝试组装一个小应用程序,它将允许我在Facebook中创建事件。我已经安装了我的Facebook应用程序,并使用下面的代码成功地通过该应用程序测试了我的订阅源的帖子。

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。反序列化以解析从Facebook返回的用户数据,所以我认为这也应该以另一种方式工作。

把上面的代码暂时放在一边,我也尝试过简单地以各种格式和不同级别的参数将纯文本放入其中,但似乎什么都不起作用。

我处理这件事的方式有什么问题吗?我已经阅读了我能掌握的所有东西,我能找到的关于创建事件的样本很少,当它们发生时,它们不在C#中。

如果能在这方面提供任何帮助,我将不胜感激。如果你只是有一个干净的JSON代码副本,我可以看看我的代码应该在哪里调整,我会很感激

我已经附上了一份ser。序列化(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);

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

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

该错误可能是由于发送JSON造成的。如果您使用的是WebClient,您可以简单地用您的数据创建一个NameValueCollection,并使用WebClient.UploadValues发送请求。

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

在测试事件中,您可能会在每次测试后删除"Dev party!"事件,或者可能会更改时间,因为您不希望两个事件发生冲突。但我想知道你是否复制了你的厕所。UploadValues(…)语句作为测试,如果您再次看到该错误的话。您正在删除"测试"事件或更改名称,但没有注意到两个同名事件可能会返回错误。

这里真正糟糕的是,错误返回为OAuthException,这似乎是非常错误的。这不是身份验证或授权的问题,这纯粹是一个数据问题。

Facebook工程师,如果我对这是如何工作的是正确的,那么在这种情况下返回这个错误是一个错误,这个论坛有很多相关困惑的例子。请返回更合适的错误。