Я использую facebook c # -sdk v5.0.50.0.Пользователи моего приложения silverlight хотят иметь возможность публиковать информацию, сгенерированную моим программным обеспечением, на своей стене Facebook.
Я думаю, что образец SilverlightInBrowser в SDK является наиболее близким примером того, что мне нужно, поскольку он запрашивает у пользователя разрешениеа также читает информацию о пользователе.У меня эта часть работает нормально (но сделайте ссылку на любой полностью рабочий пример, который вы знаете).
В примере приложения используется
private string[] requestedFbPermissions = new[] { "user_about_me" };
Полагаю, мне придется изменить это, чтобы включить публикацию на стене, на одно из разрешений, перечисленных здесь - http://developers.facebook.com/docs/reference/api/permissions/, вероятно, "publish_stream "будет моей догадкой, которую я не могу проверить, пока не получу работающий бит сообщения.
Следующий шаг - написать сообщение.Я не видел версию этого с Silverlight, поэтому я немного адаптировал ответ на вопрос, не связанный с Silverlight, так как Silverlight немного отличается (например, асинхронные обратные вызовы).Мой код выглядит так:
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) 'не удалось.