Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Введення в API-інтерфейси Facebook

  1. Часто використовувані скорочення
  2. Огляд інтерфейсів Facebook Platform API
  3. Введення в Facebook SDK for Android
  4. Таблиця 1. Пакет com.facebook.android
  5. Установка Android SDK
  6. Установка Facebook SDK for Android
  7. Реєстрація додатки
  8. приклад програми
  9. Лістинг 1. Ініціалізація ідентифікатора додатка
  10. Лістинг 2. Оголошення призначеного для користувача інтерфейсу для головного екрану
  11. Лістинг 3. Оголошення призначеного для користувача інтерфейсу рядки ListView
  12. Лістинг 4. Оголошення призначеного для користувача інтерфейсу елементів меню
  13. Малюнок 1. Схема екрану SampleApp
  14. Лістинг 5. Ініціалізація додатки
  15. Лістинг 6. Створення меню
  16. Лістинг 7. Створення меню
  17. Лістинг 8. Обробка дії, обраного в меню
  18. Відображення діалогів Facebook
  19. Лістинг 9. Метод Facebook Dialog
  20. Лістинг 10. Виклик методу dialog () і обробка функції зворотного виклику
  21. Малюнок 2. Розміщення повідомлення на стіні
  22. авторизація користувачів
  23. Малюнок 3. Протокол OAuth 2.0 (IETF)
  24. Лістинг 11. Генерування хеш-ключа додатки
  25. Малюнок 4. Введення хеш-ключа додатки
  26. Лістинг 12. Визначення обробника результату дії
  27. Лістинг 13. Метод authorize
  28. Лістинг 14. Виклик методу authorize () з дозволами
  29. Малюнок 5. Екрани авторизації і дозволів (WebView)
  30. Виконання запитів Facebook API
  31. Лістинг 15. Асинхронна диспетчеризація методу
  32. Лістинг 16. Обробка запиту на отримання списку друзів
  33. Малюнок 6. Відображення результатів
  34. Ресурси для скачування

Створення Facebook-додатків для платформи Android Platform за допомогою Facebook SDK for Android

16 грудня 2010 року - за запитом автора оновлений файл для завантаження і змінено його назву на fb-sampleapp.zip (див. Розділ Завантаження ).

Часто використовувані скорочення
  • ADT: Android Development Tools (інструментарій розробки для платформи Android)
  • API: Application Programming Interface (прикладний інтерфейс програмування)
  • IDE: Integrated Development Environment (інтегроване середовище розробки)
  • JDK: Java Development Kit (комплект інструментальних засобів для розробки на мові Java)
  • JSON: JavaScript Object Notation (система позначень об'єктів JavaScript)
  • REST: Representational State Transfer (передача репрезентативного стану)
  • SDK: Software Development Kit (комплект інструментальних засобів для розробки програмного забезпечення)
  • UI: User Interface (призначений для користувача інтерфейс)
  • URL: Uniform Resource Locator (уніфікований покажчик ресурсів)
  • XML: Extensible Markup Language (розширювана мова розмітки)

попередні вимоги

Для роботи зі статтею необхідні відповідна кваліфікація та інструментальні засоби:

  • Базові знання технології Java ™ та навички використання Eclipse (або інший IDE).
  • Java Development Kit (версії 5 або 6).
  • Eclipse (версії 3.4 або 3.5).
  • Android SDK і плагін ADT.

Посилання на файли для завантаження і інформацію по установці приведені в розділі ресурси .

Огляд інтерфейсів Facebook Platform API

Перед вивченням Facebook SDK for Android важливо розібратися в платформі Facebook Platform і її інтерфейси. Згідно Facebook, платформа Facebook Platform дозволяє кожному "створювати соціальні програми для Facebook і Web". Для створення таких додатків Facebook пропонує великий набір основних і розширених API і SDK (див. Розділ ресурси ).

Основним інтерфейсом Facebook Platform є Graph API, який дозволяє читати і записувати дані в Facebook. Facebook також має так званий "старий" Old Rest API. Більш новий Graph API змінює парадигму API зі способу читання або запису даних в Facebook, орієнтованого на використання методів, на нову парадигму, яка використовує об'єкти (призначені для користувача профілі, друзі, поштові повідомлення, фотографії, переваги і т.д.) і їх взаємини або взаємозв'язку один з одним. Такий підхід спрощує Facebook API і робить його більш цілісним. Потрібно відзначити, що хоча Graph API і є кращим прикладним інтерфейсом Facebook API, Old REST API все ще активно використовується і підтримується. Обидва інтерфейсу, Graph API і REST API, застосовні до мобільних додатків, як переносних орієнтованим (native) так і Web-додатків, включаючи мобільний Web-контент у вбудованих додатках, що використовують WebViews.

Кожному об'єкту Graph API призначається унікальний ідентифікатор (ID), що дозволяє легко звертатися до нього по URL, який згодом можна уточнити для конкретного об'єкта / підключення. Загальна структура URL об'єкта: https://graph.facebook.com/OBJECT_ID/CONNECTION_TYPE, де OBJECT_ID - унікальний ідентифікатор об'єкта, а CONNECTION_TYPE - один з типів підключення, підтримуваних об'єктом. Наприклад, сторінка підтримує наступні підключення: feed / wall, photos, notes, posts, members і т.д.

Використовуючи Graph API, можна отримувати, видаляти і публікувати об'єкти. Можна виконувати пошук об'єкта, оновлення об'єкта, фільтрацію результатів пошуку і навіть динамічно виявляти підключення і взаємозв'язку об'єкта.

За замовчуванням додатка мають доступ до відкритих даних користувача. Щоб отримати доступ до закритих даних, з додатком потрібно спочатку запитати у користувача дозволу, звані розширеними дозволами (extended permissions). Facebook визначає велике число дозволів, про які можна прочитати на сторінці Extended Permissions (див. Розділ ресурси ).

Введення в Facebook SDK for Android

Тепер, після знайомства з Facebook Platform API, давайте розглянемо Facebook SDK for Android.

Facebook SDK for Android - це надбудова на мові програмування Java над Facebook Graph API і Old REST API. Цей SDK має відкриті вихідні коди і розміщується на github в репозиторії facebook / facebook-android-sdk (див. Розділ ресурси ). Відзначимо, що цей SDK може змінюватися, так як за своєю природою є постійно розвиваються. Він поширюється на умовах Apache License Version 2.0.

Facebook SDK for Android приховує більшу частину деталей реалізації, розглянутих в попередньому розділі Огляд Facebook Platform API . Це досягається за допомогою шести Java-класів, описаних в таблиці 1 .

Таблиця 1. Пакет com.facebook.android

Класи Опис AsyncFacebookRunner Допоміжний клас, який реалізує асинхронні виклики Facebook API. DialogError Клас, інкапсулює помилки діалогу. Facebook Головний клас Facebook для взаємодії з Facebook Platform API. FacebookError Клас, інкапсулює помилки Facebook. FbDialog Клас, який реалізує діалоги WebView for Facebook. Util Допоміжний клас з декількома корисними методами.

Facebook SDK for Android також містить кілька корисних прикладів, які можна використовувати як основу для своїх власних додатків.

Особливий інтерес представляють класи Facebook і Facebook Dialog, які ми розглянемо більш докладно. Базовий клас Facebook инкапсулирует методи для авторизації користувача, створення діалогів Facebook, виконання запитів до API, завершення сеансу роботи користувача, а також отримання і настройки доступу та інформації про сеанс і його стані. Клас Facebook Dialog реалізує WebView і методи для його створення, а також логіку обробки відповідей Facebook URL (станів). Діалог - це центральне поняття в SDK. SDK надає два методи аутентифікації - т.зв. єдиний вхід (single-sign on), що використовує, якщо він обраний, вбудовані прикладні діалоги Facebook, і підхід за замовчуванням, який базується на WebView. У даній статті я сконцентруюся на підході WebView. Решта класи SDK і допоміжні класи інкапсулюють інформацію про помилки або надають корисні функції, які використовуються в рамках SDK.

У наступних розділах основна увага приділяється варіантів використання типового Facebook-додатки:

  • Установка Facebook SDK for Android.
  • Реєстрація додатки.
  • Створення SampleApp.
  • Відображення діалогів Facebook.
  • Авторизація користувача.
  • Виконання запитів до API.

Установка Android SDK

Необхідно завантажити і встановити Eclipse або іншу бажану IDE. Крім того, необхідно встановити Android SDK. Інформація щодо завантаження та встановлення Eclipse і Android SDK приведена на сторінці Download the Android SDK Web-сайту Android Developer (див. Розділ ресурси ).

Установка Facebook SDK for Android

Facebook SDK for Android розміщений в github в репозиторії facebook / facebook-android-sdk. Завантажте вихідний код SDK на свій комп'ютер і розархівуйте його в робочий каталог. Запустіть Eclipse і створіть проект Android Project, вибравши File Menu -> New -> Project і Android Project. Створіть проект з існуючого вихідного коду і вкажіть каталог, в який розархівували завантажені файли (посилання на вихідний код приведена в розділі Завантаження ).

Реєстрація додатки

Перед початком роботи необхідно зареєструвати Facebook-додаток, а також отримати ідентифікатор додатки (client_id) і асоційований з ним секретний ключ (client_secret). Ідентифікатор client_id використовується в додатку при виконанні різних звернень до Facebook API.

приклад програми

Мій приклад програми, який я назвав SampleApp, демонструє використання Facebook SDK for Android. Додаток складається з одного файлу, що реалізує роботу SampleApp і використовує один екран для відображення повідомлень, друзів Facebook і елементів меню для реєстрації / аутентифікації користувача, отримання списку друзів і для відправки повідомлення на стіну (wall) аутентифицированного користувача (me).

Пам'ятайте, що до початку роботи необхідно зареєструвати додаток на Facebook (як розглядалося раніше) і встановити для атрибута APP_ID в SampleApp.java значення client_id, надане Facebook (див. лістинг 1 ).

Лістинг 1. Ініціалізація ідентифікатора додатка

// Установка ідентифікатора додатка в отримане значення client_id // Див. Http://www.facebook.com/developers/createapp.php public static final String APP_ID = ".....";

У нашому прикладі програми використовується лінійна схема екрану, яка містить TextView для повідомлень про стан, ListView для відображення списку друзів Facebook, витягнутого з сервера, і елементи меню: реєстрація / авторизація користувача, отримання списку друзів, відправка повідомлення на стіну аутентифицированного користувача. В лістингу 2 наведені оголошення призначеного для користувача інтерфейсу на мові XML для схеми головного екрана призначеного для користувача інтерфейсу.

Лістинг 2. Оголошення призначеного для користувача інтерфейсу для головного екрану

<? Xml version = "1.0" encoding = "utf-8"?> <LinearLayout xmlns: android = "http://schemas.android.com/apk/res/android" android: orientation = "vertical" android: layout_width = "fill_parent" android: layout_height = "fill_parent" android: background = "@ drawable / black"> <TextView android: id = "@ + id / txt" android: text = "@ string / hello" android: textColor = " @ drawable / white "android: layout_width =" wrap_content "android: layout_height =" wrap_content "android: paddingRight =" 10dp "android: paddingLeft =" 10dp "android: layout_margin =" 10dp "android: textSize =" 10sp "android: layout_marginTop = "5px" android: layout_marginBottom = "5px" android: layout_marginRight = "0px" android: layout_marginLeft = "0px" android: gravity = "left" /> <ListView android: id = "@ + id / friendsview" android: layout_width = "fill_parent" android: layout_height = "wrap_content" android: textFilterEnabled = "true" /> <TextView android: id = "@ id / android: empty" android: layout_width = "match_parent" android: layout_height = "match_parent" android: text = "No data" /> </ LinearLayout>

В лістингу 3 наведені оголошення призначеного для користувача інтерфейсу на XML для кожного рядка в ListView.

Лістинг 3. Оголошення призначеного для користувача інтерфейсу рядки ListView

<? Xml version = "1.0" encoding = "utf-8"?> <LinearLayout xmlns: android = "http://schemas.android.com/apk/res/android" android: layout_width = "fill_parent" android: layout_height = "? android: attr / listPreferredItemHeight" android: padding = "10dip"> <TextView android: id = "@ + id / rowtext_top" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: gravity = "center_vertical "/> </ LinearLayout>

В лістингу 4 наведені оголошення призначеного для користувача інтерфейсу на XML для елементів меню.

Лістинг 4. Оголошення призначеного для користувача інтерфейсу елементів меню

<Menu xmlns: android = "http://schemas.android.com/apk/res/android"> <item android: id = "@ + id / login" android: title = "Login" /> <item android: id = "@ + id / getfriends" android: title = "Get Friends" /> <item android: id = "@ + id / wallpost" android: title = "Wall Post" /> </ menu>

на малюнку 1 показані результати цих оголошень призначеного для користувача інтерфейсу для SampleApp до (з кнопкою Login) і після (з кнопками Logout, Get Friends і Wall Post) входу в систему.

Малюнок 1. Схема екрану SampleApp
Створення Facebook-додатків для платформи Android Platform за допомогою Facebook SDK for Android   16 грудня 2010 року - за запитом автора оновлений файл для завантаження і змінено його назву на fb-sampleapp

При створенні екземпляра SampleApp платформа Android активізує метод SampleApp onCreate (). Цей метод попередньо перевіряє, чи встановлений App ID, инициализирует ресурси призначеного для користувача інтерфейсу і екземпляр Facebook-сеансу (див. лістинг 5 ).

Лістинг 5. Ініціалізація додатки

/ ** Викликається при першій активності. * / @Override public void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); // Перевірка установки client_app. if (APP_ID == null) {Util.showAlert (this, "Warning", "Facebook Application ID must be set ..."); } // Ініціалізація уявлення вмісту. setContentView (R.layout.main); // Get the status text line resource mText = (TextView) SampleApp.this.findViewById (R.id.txt); // Установка ListView Adapter, що завантажується при виборі get friends. listView = (ListView) findViewById (R.id.friendsview); friendsArrayAdapter = new FriendsArrayAdapter (this, R.layout.rowlayout, friends); listView.setAdapter (friendsArrayAdapter); // Визначення крутного об'єкта (spinner), що використовується // при завантаженні списку користувачів по мережі. mSpinner = new ProgressDialog (listView.getContext ()); mSpinner.requestWindowFeature (Window.FEATURE_NO_TITLE); mSpinner.setMessage ( "Loading ..."); // Ініціалізація сеансу роботи Facebook. mFacebook = new Facebook (APP_ID); mAsyncRunner = new AsyncFacebookRunner (mFacebook); }

Інша логіка роботи програми активізується при взаємодіях з призначеним для користувача інтерфейсом за допомогою елементів меню. Визначено три елементи меню: 1) login / logout (вхід / вихід, що перемикається), 2) get friends (отримання списку друзів) і 3) post to the wall (публікація на стіні) (див. лістинг 4 ). При виборі елемента меню додаток виконує відповідну дію. В лістингу 6 показано, як обробляються елементи меню. Він демонструє створення екземпляра меню шляхом конкретизації його XML-визначення.

Лістинг 6. Створення меню

/ ** * Активізується під час створення меню * @param - створюване меню * / @Override public boolean onCreateOptionsMenu (Menu menu) {MenuInflater inflater = getMenuInflater (); inflater.inflate (R.menu.main_menu, menu); return true; }

В лістингу 7 демонструється зміна елементів меню перед відображенням, тобто висновок кнопок login або logout, а також включення / вимикання опцій вилучення списку друзів і публікації на стіні.

Лістинг 7. Створення меню

/ ** * Активізується при підготовці відображення меню * @param menu - Готують меню * / @Override public boolean onPrepareOptionsMenu (Menu menu) {MenuItem loginItem = menu.findItem (R.id.login); MenuItem postItem = menu.findItem (R.id.wallpost); MenuItem getfriendsItem = menu.findItem (R.id.getfriends); if (mFacebook.isSessionValid ()) {loginItem.setTitle ( "Logout"); postItem.setEnabled (true); getfriendsItem.setEnabled (true); } Else {loginItem.setTitle ( "Login"); postItem.setEnabled (false); getfriendsItem.setEnabled (false); } LoginItem.setEnabled (true); return super.onPrepareOptionsMenu (menu); }

В лістингу 8 показано, як обробляються елементи меню і активізується відповідне дію (login / logout, get friends, post to wall).

Лістинг 8. Обробка дії, обраного в меню

/ ** * Активізується при виборі елемента меню * @param item - обраний елемент меню * / @Override public boolean onOptionsItemSelected (MenuItem item) {switch (item.getItemId ()) {// Перемикання login / logout. case R.id.login: // Зміна стану кнопки. // Після login перейти в logout. if (mFacebook.isSessionValid ()) {AsyncFacebookRunner asyncRunner = new AsyncFacebookRunner (mFacebook); asyncRunner.logout (this.getBaseContext (), new LogoutRequestListener ()); } Else {// Зміна стану кнопки. // Після logout переключити в login (авторизація). mFacebook.authorize (this, PERMISSIONS, new LoginDialogListener ()); } Break; // Повідомлення на стіні. case R.id.wallpost: // Wall Post mFacebook.dialog (SampleApp.this, "stream.publish", new WallPostDialogListener ()); break; // Отримати список друзів. case R.id.getfriends: // Wall Post // Отримати список друзів аутентифицированного користувача. mSpinner.show (); mAsyncRunner.request ( "me / friends", new FriendsRequestListener ()); break; default: return false; } Return true; }

Для обробки стану кожного асинхронного виклику в додатку використовується кілька функцій зворотного виклику (callback). У SampleApp визначені функції зворотного виклику для обробки успішних чи невдалих запитів на вхід в систему, для діалогів виходу з системи, для діалогів відправки повідомлення на стіну, для запитів про друзів. Ви можете додати свої власні дії, слідуючи тому ж шаблону додавання меню і відповідних викликів Facebook з відповідними функціями зворотного виклику для отримання повідомлень про стан.

Обидва елементи меню, login і post to wall, активізують діалоги Facebook, які за замовчуванням використовують WebView-діалоги SDK, якщо не вибрана опція єдиного входу; це питання розглядається в наступному розділі.

Функція зворотного виклику FriendsRequestListener описується в розділі Виконання запитів Facebook API . Остання функція зворотного виклику MyDialogListener реалізує Facebook SDK for Android DialogListener для запитів Facebook, які використовують WebView-діалоги SDK, як описано в наступному розділі. Конструктор DialogListener повинен реалізовувати відповідну логіку завершення, наприклад, під час запитів login і wall post.

Відображення діалогів Facebook

Facebook SDK for Android заснований на Facebook-діалогах Web / сервер, що забезпечують різні взаємодії з користувачами, такі як авторизація, установка дозволів і публікація повідомлень. Базовий клас SDK Facebook.java визначає метод dialog () при генеруванні діалогу призначеного для користувача інтерфейсу для запитуваної дії (див. лістинг 9 ).

Лістинг 9. Метод Facebook Dialog

/ ** * Генерація UI-діалогу для запитуваної дії в конкретному * Android-контексті з використанням наданих параметрів. * / Public void dialog (Context context, String action, Bundle parameters, final DialogListener listener) {:}

Цей асинхронний метод приймає в якості вхідних даних контекст додатки, яке виконує дію (наприклад, login, publish_stream, read_stream, offline_access), необхідні для конкретного запиту або дії параметри і метод listener, що викликається при завершенні виконання асинхронних методів. Метод створює відповідний WebView-діалог. Наприклад, для публікації повідомлення про стан виконується виклик методу dialog () базового класу Facebook, в який передається дія stream.publish (див. лістинг 10 ).

Лістинг 10. Виклик методу dialog () і обробка функції зворотного виклику

package com.myapp.facebook.android; : Import com.facebook.android. *; : MFacebook = new Facebook (); // Facebook core: // Створити Facebook-діалог (використовуючи виклик асинхронного API). mFacebook.dialog (this, "stream.publish", new MyDialogListener ()); :: // // Асинхронний прослуховувач діалогу. // public class MyDialogListener extends com.facebook.android.Facebook.DialogListener {public void onComplete (Bundle values) {final String postId = values.getString ( "post_id"); if (postId! = null) {// "Wall post made ..."} else {// "No wall post made ..."}} public void onFacebookError (FacebookError e) {...} public void onError ( DialogError e) {...} public void onCancel () {...}}

Результатом цього виклику є Web-діалог publish to wall, показаний на малюнку 2 .

Малюнок 2. Розміщення повідомлення на стіні

Це знайома Web-сторінка Facebook для розміщення повідомлення на стіні користувача. Користувач може пропустити це вікно або продовжити дію і опублікувати повідомлення. Таке спільне використання вбудованого і Web-вмісту в одному мобільному додатку є відмінним прикладом можливостей гібридних додатків.

авторизація користувачів

Платформа Facebook Platform надає підтримку аутентифікації OAuth 2.0, а також більш старої сигнатурної схеми авторизації. При написанні нових додатків слід уникати застосування старої схеми аутентифікації, оскільки в найближчому майбутньому підтримка цієї схеми припиниться. В розділі ресурси наведено посилання на специфікацію OAuth 2.0 Protocol.

Facebook SDK for Android разом з Facebook Platform приховують складність OAuth-аутентифікації (див. малюнок 3 ).

Малюнок 3. Протокол OAuth 2.0 (IETF)

Facebook SDK for Android використовує для аутентифікації мобільний Web-метод, а не вбудований. Відзначимо, що майбутні версії SDK, можливо, будуть мати вбудовану підтримку OAuth. При такому підході SDK використовує для аутентифікації Web-діалог Facebook всередині WebView. Такий підхід цікавий з кількох причин:

  • Зменшується складність реализации OAuth, вбудованої в додаток.
  • Можливо, Користувачі более довіряють Стандартним и знайомиться діалогам входу и запиту дозволено, что Відображається в звичайний браузерах при вікорістанні Facebook.

Недоліком цього підходу є ті, что іноді ВІН может віявітіся більш повільнім, чем вбудована реалізація. У зв'язку з ЦІМ в SDK такоже Пропонується альтернативний підхід до аутентіфікації / входу, Який вікорістовує Вбудовані в Facebook кошти єдиного входу. Если на пристрої встановлен офіційне Facebook-додаток, Facebook SDK for Android может використовуват его алгоритм авторізації / входу. Але для цього необхідно спочатку підписати ваше додаток (див. Статтю Френка Ейблсона "Введення в систему захисту Android", посилання на яку наведено в розділі ресурси ), А потім згенерувати підпис або хеш-ключ (див. лістинг 11 ).

Лістинг 11. Генерування хеш-ключа додатки

keytool -exportcert -alias [alias] -keystore [keystore] | openssl sha1 -binary | openssl base64

Відзначимо, що код з лістингу 11 зазвичай розташовується в одному рядку. Тут він розділений на кілька рядків з метою форматування.

Потім потрібно зареєструвати згенерований хеш-ключ для вашого конкретного додатка на Facebook в розділі Mobile and devices, як показано на малюнку 4 . ( збільшена версія малюнка 4.)

Малюнок 4. Введення хеш-ключа додатки

Після реєстрації необхідно визначити обробник результату дії для додатка - реалізувати onActivityResult (...), в якому активізувати метод facebook.authorizeCallback (...), як показано в лістингу 12 .

Лістинг 12. Визначення обробника результату дії

@Override public void onActivityResult (int requestCode, int resultCode, Intent data) {super.onActivityResult (requestCode, resultCode, data); facebook.authorizeCallback (requestCode, resultCode, data); :: // ... Інші дії onActivityResult в додатку ...}

Відзначимо, що якщо метод єдиного входу не визначений або відсутній вбудоване Facebook-додаток, SDK за замовчуванням буде вибирати WebView-підхід для аутентифікації / входу. У решти статті застосовується підхід за замовчуванням.

Як вже говорилося, за замовчуванням програма має доступ до відкритих даних в профілі користувача. Для доступу до закритих даних додаток має запросити дозволу, а користувач - надати їх. Дозволи на отримання доступу до закритих даних називаються Extended Permissions.

Метод authorize () платформи Facebook SDK for Android реалізує алгоритм OAuth 2.0 User-Agent для вилучення маркера доступу, що використовується в повторних запитів API. Метод запускає яку дію (Activity) (вбудоване Facebook-додаток, якщо воно присутнє і налаштоване), або WebView-діалог, запитувач у користувача його повноваження (аутентифікація) та дозволу (авторизація) (див. лістинг 13 ).

Лістинг 13. Метод authorize

/ ** * Метод authorize, що надає призначені для користувача дозволу. * / Public void authorize (Activity activity, String [] permissions, final DialogListener listener) {:}

Відзначимо, що для коректної роботи аутентифікації за допомогою єдиного входу необхідно в функцію onActivityResult () включити виклик методу authorizeCallback ().

Згадайте, як елемент меню login в лістингу 8 активував метод authorize () з дозволами.

лістинг 14 демонструє, як активізувати метод authorize () з дозволами на запис вмісту. Він також має дозвіл на запис коментарів і переваг (publish_stream), читання для користувача фідів (feed), виконання пошуку (read_stream) і продовження повноважень доступу (offline_access). Не забудьте встановити свій APP_ID.

Лістинг 14. Виклик методу authorize () з дозволами

package com.myapp.facebook.android; : Import com.facebook.android. *; : Public static final String APP_ID = "13234 ..."; private static final String [] PERMISSIONS = new String [] { "publish_stream", "read_stream", "offline_access"}; :: // Виклик методу авторизації. mFacebook.authorize (getContext (), APP_ID, mPermissions, new MyLoginDialogListener ()); :: // Асинхронний зворотний виклик після завершення авторизації. private final class MyLoginDialogListener implements com.facebook.android .Facebook.DialogListener {public void onComplete (Bundle values) {...} // дозволити logout public void onFacebookError (FacebookError error) {...} public void onError (DialogError error) {...} public void onCancel () {...}}

Метод authorize () активізує розглянутий раніше метод dialog (), але на цей раз в якості дії передається запит Login. За допомогою Facebook Platform і її реалізації специфікації OAuth метод authorize () забезпечує запит аутентифікації в Facebook і повернення маркера access_token, що використовується в сеансі Facebook і при зверненні до API: https: //graph.facebook.com/ID? Access_token = ... .

Детальна інформація про те, як працює аутентифікація, розміщена на сторінці Facebook Authentication, посилання на яку наведено в розділі ресурси .

Виклик методу authorize () призводить до відображення WebView-діалогів, показаних на малюнку 5 .

Малюнок 5. Екрани авторизації і дозволів (WebView)

Після входу користувача в систему додаток запитує дозволу на доступ до певних даних (інформація про адресу електронної пошти або телефоні і пароль). Користувач може дозволити або заборонити додатком доступ до своєї Facebook-сторінці, а також доступ до базової інформації, можливість публікації на стіні користувача, доступ до повідомлень у новинних фідах, доступ до даних про користувача.

Виконання запитів Facebook API

Базовий клас Facebook реалізує кілька методів request () для викликів Old REST і Graph API. Крім того, SDK надає допоміжні класи для виконання асинхронних викликів API.

Як приклад виклику API ми виконаємо запит вилучення списку друзів аутентифицированного користувача. Згадайте структуру Graph API:

https://graph.facebook.com/ID/CONNECTION_TYPE

Знову зверніть увагу на спеціальний ідентифікатор me, який використовується для ідентифікації аутентифицированного користувача; користувач увійшов в https://graph.facebook.com/me/friends.

В лістингу 15 наведено фрагмент коду з лістингу 8 , В якому показаний виклик методу request (). У цьому прикладі використовується метод AsyncFacebookRunner.request (...), який є допоміжною оболонкою, що дозволяє викликати використовуваний метод асинхронно шляхом виконання його в своєму власному потоці. Ця дія виконується, щоб уникнути блокування головного потоку призначеного для користувача інтерфейсу.

Лістинг 15. Асинхронна диспетчеризація методу

// Отримати список друзів case R.id.getfriends: // Wall Post // Отримати список друзів аутентифицированного користувача mSpinner.show (); mAsyncRunner.request ( "me / friends", new FriendsRequestListener ()); break;

Функція зворотного виклику FriendsRequestListener onComplete (...) активізується, коли завершується виконання запиту на отримання списку друзів. Цей метод аналізує повертається JSON зі списком друзів. Відзначімо, что в лістингу 16 не показані всі реалізовані методи.

Лістинг 16. Обробка запиту на отримання списку друзів

/ ** * FriendsRequestListener реалізує Прослуховувач запиту / функцію зворотного * виклику для запитів get friends. * / Public class FriendsRequestListener implements com.facebook.android.AsyncFacebookRunner.RequestListener {/ ** * Викликається після завершення запиту на отримання списку друзів. * Витяг, аналіз і відображення потоку JSON. * / Public void onComplete (final String response) {mSpinner.dismiss (); try {// обробка відповіді: виконується в фоновому потоці Log.d ( "Facebook-Example-Friends Request", "response.length ():" + response.length ()); Log.d ( "Facebook-Example-Friends Request", "Response:" + response); final JSONObject json = new JSONObject (response); JSONArray d = json.getJSONArray ( "data"); int l = (d! = null? d.length (): 0); Log.d ( "Facebook-Example-Friends Request", "d.length ():" + l); for (int i = 0; i <l; i ++) {JSONObject o = d.getJSONObject (i); String n = o.getString ( "name"); String id = o.getString ( "id"); Friend f = new Friend (); f.id = id; f.name = n; friends.add (f); } // Тільки власник потоку може звернутися до своїх уявлень. SampleApp.this.runOnUiThread (new Runnable () {public void run () {friendsArrayAdapter = new FriendsArrayAdapter (SampleApp.this, R.layout.rowlayout, friends); listView.setAdapter (friendsArrayAdapter); friendsArrayAdapter.notifyDataSetChanged ();}} ); } Catch (JSONException e) {Log.w ( "Facebook-Example", "JSON Error in response"); }}:}

Виходячи з вимог до певної програми відповідь сервера Facebook, представлений в форматі JSON, необхідно проаналізувати і обробити відповідним чином. Ви також можете відобразити цю інформацію, використовуючи WebView або ListView, як в нашому прикладі SampleApp (див. рисунок 6 ).

Малюнок 6. Відображення результатів

Висновок

У даній статті були розглянуті інтерфейси Facebook API. Було дано загальний огляд платформи Facebook Platform і її API, а потім були розглянуті Facebook SDK for Android і приклад програми. Ця інформація допоможе краще зрозуміти різні інтерфейси Facebook API і приступити до створення Facebook-додатків для платформи Android.

Ресурси для скачування

Схожі тими

  • Оригінал статті: Introduction to Facebook APIs (EN).
  • Web-сторінка мобільних додатків Facebook : Інформація про включення Facebook в свій мобільний додаток за допомогою тих же API, які використовуються усіма Web-сайтами, адаптованих для мобільного телефону.
  • Створення програми - розробники Facebook : Реєстрація Facebook-додатки.
  • Розширені дозволу - розробники Facebook : Запит розширених дозволів при необхідності отримати доступ до закритих частин профілю користувача або опублікувати вміст на Facebook від імені користувача.
  • Офіційна документація для розробників Facebook-додатків : Інформація про можливості API, що дозволяє створювати функції для роботи в соціальних мережах для підвищення привабливості та функціональності ваших Web-сайтів.
  • Аутентифікація в Facebook : Інформація про аутентифікації і авторизації при використанні платформи Facebook для розробки додатків.
  • План дій розробника Facebook-додатків : Інформація для планування змін, які можуть зажадати модифікації вихідного коду.
  • Введення в розробку Android-додатків (Френк Ейблсон (Frank Ableson), developerWorks, травень 2009 року): введення в платформу Android і приклад простого Android-додатки (EN).
  • Мережеві можливості Android (Френк Ейблсон (Frank Ableson), developerWorks, червень 2009 року): інформація про мережеві можливості платформи Android (EN).
  • Робота з XML на платформі Android (Майкл Галпін (Michael Galpin), developerWorks, червень 2009 року): інформація про різні варіанти роботи з XML на Android і їх використанні для створення своїх власних Android-додатків (EN).
  • Під капотом вбудованих Web-додатків для платформи Android : Інформація про гібридних додатках в Android.
  • Детально про платформу Android (Френк Ейблсон (Frank Ableson), Manning Publications, 2010 рік): всі аспекти розробки Android-додатків (EN).
  • Дизайн і розробка мобільних додатків (Брайан Флінг (Brian Fling), O'Reilly Media, 2009 рік): практичні рекомендації, стандарти, методики та передовий досвід створення мобільних додатків (EN).
  • Документація по Android SDK : Найсвіжіша інформація в довіднику по Android API.
  • Інтерактивна документація про пакет android.webkit : Додаткова інформація з налаштування елемента управління WebView.
  • The Open Handset Alliance : Спонсор Android.
  • Інші статті автора (Енріке Ортіс (C. Enrique Ortiz), developerWorks, з липня 2004 року по теперішній час): статті про Android, мобільних додатках, Web-сервісах і інших технологіях (EN).
  • Facebook SDK for Android (В даний час альфа-версія): попрацюйте з цією бібліотекою і інтегруйте Facebook в свої мобільні Android-додатки.
  • Платформа Facebook Platform : Розширте свої можливості по створенню соціальних програм на Facebook і в Web.
  • Facebook Old REST API (Попередня версія Graph API): програмне взаємодія з Web-сайтом Facebook за допомогою простих HTTP-запитів.
  • Facebook Graph API (Поточна версія): детальна інформація про базову інтерфейсі Facebook Platform API.
  • Специфікація OAuth 2.0 Protocol (Липень 2010 року): інформація про OAuth-аутентифікації, підтримуваної платформою Facebook Platform.
  • Android SDK : Файли для завантаження SDK, довідкова інформація по API, останні новини по платформі Android на офіційному сайті для розробників Android-додатків. Для прикладів статті підійде версія 1.5 або вище.
  • Проект Android Open Source Project : Інформація і відкритий вихідний код для проектування сумісних з Android пристроїв.
  • JDK 6 Update 21 : Платформа Java Platform, Standard Edition.
  • Eclipse : Остання версія Eclipse IDE.
  • Facebook SDK for Android : Посилання на поточну версію (на момент публікації - альфа-версію) Facebook SDK for Android.
  • Сертифікація IBM XML : Інформація про отримання сертифіката IBM-Certified Developer по XML і суміжних технологій.

Підпішіть мене на ПОВІДОМЛЕННЯ до коментарів

Encoding = "utf-8"?
Encoding = "utf-8"?
Com/apk/res/android" android: layout_width = "fill_parent" android: layout_height = "?
Com/ID?
Null?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    Подготовка к ЕГЭ по математике
    Статьи Опубликовано: 05.10.2017 Подготовка к ЕГЭ по МАТЕМАТИКЕ. 1 часть. Эффективный курс подготовки. Вы находитесь на сайте www.ege-ok.ru - Подготовка к ЕГЭ по математике. Меня зовут Инна Владимировна

    Куда поступить с обществознанием, русским и математикой
    Статьи Опубликовано: 06.10.2017 Сдача ЕГЭ. Куда поступать? Обществознание считается одним из самых популярных предметов, которые выпускники сдают на ЕГЭ. Ввиду высокого рейтинга дисциплины Рособрнадзор

    Сайт Майер Елены - ЕГЭ по математике
    Планируется проведение двух отдельных экзаменов – базового и профильного. Кому сдавать базовый ЕГЭ по математике? Базовый ЕГЭ организуется для выпускников, изучающих математику для общего развития

    ГДЗ решебник по математике 4 класс
    Извините, тут пока ничего нет ((( Решебник по математике 4 класс (Истомина Н.Б.) – не просто возможность быстро выполнить домашнее задание для учащегося, но и способ разобраться в труднорешаемых задачах.

    ГДЗ по математике 1 класс Самсонова самостоятельные работы
    Решебник по математике за 1 класс автора Самсоновой Л.Ю. 2012 года издания. Данное пособие предлагает готовые решения на разнообразные упражнения, направленные на активизацию всего учебного процесса. Здесь

    Для этой работы нужна математика
    Слотов: 956 Рулеток: 7 Лицензия: Pragmatic Play, Microgaming, ELK, Yggdrasil, Habanero, Amatic, Isoftbet, Netent, Rival, Igrosoft, Quickspin. Игры: Автоматы, Покер, Рулетки. Всего 963 Отдача: 98% Бонус

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

    Функция экспонента в Excel
    Одной из самых известных показательных функций в математике является экспонента. Она представляет собой число Эйлера, возведенное в указанную степень. В Экселе существует отдельный оператор, позволяющий

    ЕГЭ по математике 2018
    ЕГЭ по математике, наравне с русским языком , – обязательный экзамен для сдачи выпускниками 11-х классов. По статистике он самый сложный. Мы предлагаем ознакомиться с общей информацией об экзамене и

    Секреты эффективной и быстрой подготовки ко второй части ОГЭ по математике.
    Уважаемые девятиклассники, настоящие или будущие! Часто от вас приходится слышать следующие вопросы. Легко ли подготовиться к заданиям второй части ОГЭ по математике? Сколько для этого понадобится


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: