Статьи

Windows Phone: соединение с Facebook

В этом уроке мы поговорим о том, как взаимодействовать с API Facebook и всеми инструментами, необходимыми для его подключения. В частности, приложение, которое мы собираемся создать, сможет подключаться к учетной записи Facebook пользователя и обновлять его статус. Давайте начнем!


Прежде всего, нам нужно создать новый проект с Visual Studio. Мы просто создадим простое приложение, поэтому выберите опцию «Приложение для Windows Phone»:


Учебник-03

Если вы используете Visual Studio 2012 с новым WP8 SDK, вам будет задан вопрос о целевой версии ОС Windows Phone. Если это так, то просто выберите ОС 7.1.

Учебник-02

Если проект уже создан, откройте файл «MainPage.xaml», если он еще не открыт, и измените текстовое поле приложения и имени страницы по умолчанию:

Теперь в нашей ContentPanel Grid мы добавим две строки, одну для TextBox, где пользователь будет вводить новый статус, а другую для кнопки, чтобы передать статус:

А затем просто добавьте TextBox в первой строке с именем «Сообщение» и кнопку во второй:

В конце вы должны иметь это:

Учебник-08

Facebook имеет очень полный API для обеспечения взаимодействия между приложениями и сайтом. API позволяет вашему приложению подключаться и взаимодействовать с учетной записью FB пользователя.

Чтобы подключить наше приложение к Facebook, нам нужно зарегистрироваться в качестве разработчика Facebook. Чтобы создать учетную запись разработчика Facebook, перейдите на сайт разработчика Facebook ,
затем войдите в свою учетную запись Facebook или создайте ее, если у вас ее еще нет. После того, как вы уже вошли в систему, нажмите кнопку «Зарегистрироваться» и следуйте инструкциям.


Теперь создайте новое приложение, перейдя в меню «Приложения», а затем нажмите кнопку «Создать новое приложение».

После того, как вы создали свое приложение, вы увидите страницу настроек приложения и на ней идентификатор приложения / номер ключа API.

Скопируйте это число, вернитесь в проект, и внутри файла «MainPage.xaml.cs» создайте новую строку глобальной константы поверх вашего конструктора:


У Facebook есть несколько отличных SDK для iOS и Android, но, к сожалению, нет для WP7, поэтому для подключения к Facebook из приложения WP7 у нас есть два варианта: (1) создать все вызовы вручную или (2) использовать Facebook C # SDK , неофициальный SDK, созданный специально для приложений на C #.

Для этого урока мы будем использовать C # SDK. В него встроен каждый метод из API Facebook, поэтому он значительно облегчит нашу задачу!


Этот SDK доступен только через NuGet, поэтому в случае, если ваша Visual Studio не включает менеджер пакетов NugGet,
вам нужно будет скачать его с сайта NuGet .
Чтобы загрузить пакет, откройте консоль диспетчера пакетов в Visual Studio (Инструменты> Диспетчер пакетов библиотеки> Консоль диспетчера пакетов) и введите следующую команду: Install-Package Facebook . Если у вас возникли проблемы с загруженной версией, попробуйте использовать эту команду: Install-Package Facebook -version 6.0.24


Теперь, когда у нас есть SDK, мы добавим его в наш проект. Добавьте новый импорт в файл «MainPage.xaml.cs»:


Чтобы пользователь мог подключиться к Facebook, он должен сначала дать нам доступ и разрешение на свою учетную запись FB. Это делается через веб-страницу Facebook, и поэтому нам нужно добавить веб-браузер в наше приложение. Браузер должен охватывать большую часть страницы, поэтому сначала она будет свернута, а затем изменится и станет видимой именно тогда, когда пользователю потребуется войти в систему. В файле «MainPage.xaml» добавьте новый веб-браузер чуть ниже ContentPanel:


Теперь, когда все настроено правильно, мы можем начать кодировать наше приложение. Создайте новую переменную FacebookClient и назовите ее просто client. Это где все соединения будут сделаны. Также, инициируйте переменную внутри конструктора:


Чтобы что-то опубликовать, пользователь должен нажать на кнопку «Опубликовать». Давайте пойдем и добавим событие click к этой кнопке:

На стороне кода, когда пользователь нажимает кнопку, он должен войти в систему с Facebook и авторизоваться, чтобы принять наше приложение. Для этого процесса нам нужно сделать браузер видимым и перейти по URL-адресу, который нам предоставит клиент, но перед этим нам нужно отправить некоторые начальные параметры:

Если вы запустили свой код прямо сейчас и нажали кнопку «Опубликовать», должен появиться браузер со страницей входа в Facebook:

Учебник-07

После того как пользователь вошел в Facebook, браузер перейдет по URL-адресу, который будет содержать наш токен доступа для вызовов API. Как только мы получим его, нам просто нужно назначить его нашему клиенту. Одна вещь, которую следует принять во внимание, это то, что есть много страниц, на которые может перейти браузер (неправильный пароль, пользователь отклонил наше приложение и т. Д.), Поэтому мы должны попытаться получить токен только тогда, когда мы уверены, что мы находимся на правильная страница

Добавьте событие навигации в веб-браузер:

Затем добавьте следующие строки в обработчик событий:


Теперь, когда у нас есть доступ, мы можем перейти к записи на стене пользователя. Создайте новый приватный метод void с именем postToWall и добавьте следующие строки:

Единственный параметр, который нам нужно отправить на этот вызов, — это сообщение, которое мы собираемся опубликовать на стене пользователя. Сообщение, которое мы отправим, будет текстом из нашего TextBox под названием «Сообщение». Сообщение будет отправлено асинхронно, поэтому после завершения задачи будет вызвано событие PostCompleted, поэтому нам не нужно добавлять обработчик события для него.


Поскольку мы просто хотим добавить обработчик событий один раз, мы добавим его в конструктор сразу после инициализации нашего клиента. Внутри обработчика проверьте, была ли публикация успешно завершена или были ли ошибки во время операций, затем уведомите пользователя:


С этим кодом наше приложение уже сможет отправлять сообщения через учетную запись пользователя Facebook.

Запустите приложение в эмуляторе, попробуйте опубликовать любое тестовое сообщение, которое вы хотите, и в конце вы получите сообщение, в котором говорится: «Сообщение успешно отправлено».

Учебник-06

Теперь откройте учетную запись Facebook в веб-браузере, и вы должны увидеть сообщение, которое вы только что опубликовали:

Учебник-05

Поздравляем! Теперь у вас есть приложение, которое может подключаться к Facebook, но есть кое-что, что мы могли бы улучшить. Например, мы могли бы попытаться сохранить токен доступа, чтобы пользователям не приходилось входить в систему каждый раз, когда они открывают приложение.


Мы собираемся сохранить токен для настроек приложения, но для этого мы должны сначала импортировать библиотеку IsolatedStorage:

С помощью этой библиотеки теперь мы можем просто продолжить и создать метод:


Теперь нам нужно получить токен из IsolatedStorage:


Используя эти два метода, мы можем теперь получить токен и назначить его нашему клиенту при каждом открытии приложения:


Еще одна вещь, которую следует принять во внимание, — это то, что пользователь может отклонить разрешения нашего приложения, поэтому мы должны обнаружить это и снова запросить разрешения. Это обнаружение должно быть сделано в нашем обработчике PostCompleted, так как именно здесь Facebook сообщит нам о проблеме с нашим сообщением. Добавьте следующие строки в наш обработчик PostCompleted:


В качестве последнего шага, мы должны предоставить пользователю возможность закрыть браузер при желании.
Это действие должно быть передано кнопке «Назад», поэтому нам просто нужно изменить обработчик события для его достижения.

Добавьте следующий метод в ваш код:


Протестируйте свое приложение еще раз, теперь у вас есть полностью работающее приложение Facebook!


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