Facebook является неизбежным инструментом социальной активности. Если вы создаете приложение для Windows Phone 7 для определенного события, знаменитости или чего-либо, у кого есть связанная страница Facebook, вам следует подумать о том, чтобы добавить какое-то участие в этом приложении. Одним из примеров является добавление самых последних сообщений в каком-либо формате в ваше клиентское приложение. Однако вы не можете просто извлекать данные из Facebook публично, сначала необходимо пройти проверку подлинности звонков, и для этого нам нужно сначала создать приложение Facebook.
Этот пост покажет, как получить самые последние сообщения со страницы, используя только RestSharp. Если вы создаете что-то более сложное с большей интеграцией, подумайте об использовании этой замечательной библиотеки — Facebook C # SDK .
Вы можете сделать это на странице разработчиков / приложений 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); }
Если мы запустим код сейчас, мы получим текущую ленту новостей, как показано на следующем изображении (обратите внимание, что это довольно старый скриншот):
Классы, используемые для десериализации ответа:
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 КБ].