Статьи

Интеграция с Facebook в приложении Windows Phone 7


Facebook является неизбежным инструментом социальной активности.
Если вы создаете приложение для Windows Phone 7 для определенного события, знаменитости или чего-либо, у кого есть связанная страница Facebook, вам следует подумать о том, чтобы добавить какое-то участие в этом приложении. Одним из примеров является добавление самых последних сообщений в каком-либо формате в ваше клиентское приложение. Однако вы не можете просто извлекать данные из Facebook публично, сначала необходимо пройти проверку подлинности звонков, и для этого нам нужно сначала создать приложение Facebook.

Этот пост покажет, как получить самые последние сообщения со страницы, используя только RestSharp. Если вы создаете что-то более сложное с большей интеграцией, подумайте об использовании этой замечательной библиотеки — Facebook C # SDK .

Вы можете сделать это на странице разработчиков / приложений Facebook и нажать « Создать новое приложение» и дать своему приложению имя. В целях тестирования используйте произвольное имя приложения.

 Создание нового приложения Facebook

После того, как приложение будет создано, вы получите идентификатор приложения и App Secret требуется для создания аутентифицированных вызовов. Базовый URI для всех запросов: https://graph.facebook.com. Обратите внимание, что я буду использовать Async CTP 3 в этом приложении и асинхронные расширения RestSharp, упомянутые в предыдущем посте.

Сначала нам нужен токен доступа. Вы можете получить его с помощью запроса GET по следующему URI: / oauth / access_token? Type = client_cred & client_id = APPID & client_secret = APPSECRET (добавить к указанному выше URI). Вы должны получить ответ, и его содержание должно выглядеть так:

access_token = NOT_SO_RANDOM_STRING

Теперь вы будете аутентифицировать все звонки с помощью данного токена доступа. Давайте получим новости, освобожденные для страницы Windows Phone Facebook, выбрав данные со следующего URI: / windowsphone / feed? Access_token = YOUR_ACCESS_TOKEN .

Просто добавьте весь контент из предыдущего запроса в конец URI. Полный код выглядит так:

private async void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
    // define base URL
    _restClient = new RestClient("https://graph.facebook.com");

    // cache token between calls (if you consider adding refresh button or auto refresh)
    if (String.IsNullOrEmpty(_token))
    {
        var tokenRequest = new RestRequest(string.Format("/oauth/access_token?type=client_cred&client_id={0}&client_secret={1}", AppId, AppSecret));

        // token will be right inside
        _token = (await _restClient.ExecuteTaskAsync(tokenRequest)).Content;
    }

    // now fetch the list of posts
    var request = new RestRequest(string.Format("/{0}/feed?{1}", "windowsphone", _token), Method.GET);
    DataContext = await _restClient.ExecuteTaskAsync<Data.FacebookData>(request);
}

Если мы запустим код сейчас, мы получим текущую ленту новостей, как показано на следующем изображении (обратите внимание, что это довольно старый скриншот):
Получил данные с официальной страницы Facebook

Классы, используемые для десериализации ответа:

public class FacebookData
{
    public List<FbMessage> Data { get; set; }
}

public class FbMessage
{
    public string Id { get; set; }
    public FbFrom From { get; set; }
    public string Message { get; set; }
    public DateTime CreatedTime { get; set; }
}

public class FbFrom
{
    public string Name { get; set; }
}

Поскольку я хотел показать это как концепцию, не так много полей добавлено. Не стесняйтесь добавлять больше полей, если они вам нужны. Вы можете поиграть в Graph API Explorer и проверить, какие у вас конечные точки и какие данные они возвращают.

Из приведенного выше изображения совершенно очевидно, что основной текстовый вывод выглядит плохо, и вам следует потратить некоторое время на преобразование в RichTextBox или WebBrowser для представления данных. Я оставлю это как упражнение (плохое оправдание лени) для читателя. С помощью этого кода вы можете легко встраивать ленту Facebook в приложение Windows Phone 7.

Вы можете скачать исходный код из следующего местоположения: ссылка [SkyDrive 19,5 КБ].