我正在使用facebook c#-sdk v5.0.50.0。我的silverlight应用程序的用户想要一个选项,将我的软件生成的信息发布到他们的Facebook墙上。
我认为SDK中的SilverlightInBrowser示例是我需要的最接近的示例,因为它提示用户许可并且还读取用户信息。我已经让那部分功能正常(但是要链接到你知道的任何完全正常的例子)。
示例应用使用
private string[] requestedFbPermissions = new[] { "user_about_me" };
我认为我必须更改它以启用发布到墙上,这里列出的权限之一 - http://developers.facebook.com/docs/reference/api/permissions/可能“publish_stream”将是我的猜测,我无法测试,直到我得到发布有点工作。
下一步是撰写帖子。我还没有看过这个版本的银光版本,所以我稍微调整了一个非银光问题的答案,因为银光略有不同(例如异步回调)。我的代码看起来像这样:
private void fbpost_Click2(object sender, RoutedEventArgs e)
{
var client = new FacebookClient(fb.AccessToken);
dynamic parameters = new ExpandoObject();
parameters.message = "test posting - ignore";
parameters.link = "http://www.example.com/link";
parameters.picture = "http://www.example.com/picture.jpg";
parameters.name = "Test Post";
parameters.caption = "Test Post Caption";
parameters.description = "description here";
parameters.actions = new
{
name = "View on www.example.com",
link = "http://www.example.com",
};
parameters.privacy = new
{
value = "ALL_FRIENDS",
};
parameters.targeting = new
{
countries = "US",
regions = "6,53",
locales = "6",
};
client.PostCompleted += new EventHandler<FacebookApiEventArgs>(client_PostCompleted);
client.PostAsync("me/feed", parameters);
}
void client_PostCompleted(object sender, FacebookApiEventArgs e)
{
dynamic result = e.GetResultData();
}
然而,当我调用client.PostAsync("me/feed", parameters);
尝试使用安全透明方法'SimpleJson.Reflection.CacheResolver.CreateDynamicMethod(System.String,System.Type,System.Type [],System.Type)'来访问安全关键方法'System.Reflection.Emit.DynamicMethod。 .ctor(System.String,System.Type,System.Type [],System.Type,Boolean)'失败。
答案 0 :(得分:0)
这是一个将在未来版本中修复的错误。 (它已在我的内部代码中修复)。
现在您将需要获取最新的源代码,打开Silverlight解决方案Facebook-SL4.sln并删除名为SIMPLE_JSON_REFLECTIONEMIT的符号。然后编译它并使用该DLL代替。
这是由于我们内部调用的“安全关键方法”构造函数引起的。