Как разместить на стене в фейсбуке приложение silverlight - PullRequest
0 голосов
/ 19 июля 2011

Я использую 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) 'не удалось.

1 Ответ

0 голосов
/ 19 июля 2011

это ошибка, которая будет исправлена ​​в будущей версии.(это уже исправлено в моем внутреннем коде).

на данный момент вам нужно будет взять последний исходный код, открыть решение silverlight Facebook-SL4.sln и удалить символ SIMPLE_JSON_REFLECTIONEMIT.Затем скомпилируйте его и используйте вместо этого dll.

Это было вызвано конструктором "критического метода безопасности", который мы вызываем внутри.

...