SlideShare a Scribd company logo
Работа с cоцсетями
Android
Работа с соцсетями
Почти у всех крупных соцсетей есть сладкая пара:
Авторизация через OAuth
Запросы через REST API или RPC-style API
Дополнительно
Может быть свой SDK, но зачастую (например - у Facebook)
это обертка поверх того же API
Может быть сторонний SDK (пример - Twitter4j)
OAuth
OAuth - протокол для авторизованного доступа к стороннему API. OAuth позволяет
приложению получить ограниченный API-доступ к данным стороннего сервиса, если
пользователь даетд обро.
Постановка проблемы:
Пользователи боятся вводить логины и пароли от своих любимых фейсбуков внутри
"левых" приложений.
Если же они предоставляют доступ в рамках исходного сервиса - доверие гораздо выше.
Можно ограничить права доступа и ограничения.
Схема работы с OAuth
Отсылаем браузер на страницу аутентификации сервиса, указывая URL для возврата.
Пользователь видит родную фейсбучную страничку и не боясь вводит логин/пароль
Если все ОК, у пользователя заправшивается разрешение на выдачу прав доступа для
приложения
Если все ОК, браузер перенаправляет пользователя обратно на URL сервиса
Обрабатываем редирект, в параметре редирект-запроса к нам приходит "код доступа"
С кодом доступа и "секретом" отправляем запрос на получение токена (ACCESS_TOKEN)
Отправляем прикладные запросы используя ACCESS_TOKEN
Наглядная схема
Flickr Twitter
OAuth 2.0
Лучше поддержка не-браузерных приложений
Не нужна криптография на клиенте
Токены теперь живут не долго + механизм для их обновления
Все это достигается благодаря работе по HTTPS.
OAuth 2.0 - авторизация
Появились разные сценарии для полученяи авторизации
авторизация для приложений, имеющих серверную часть
авторизация для полностью клиентских приложений
авторизация по логину и паролю
восстановление предыдущей авторизации
Клиент + Сервер
Только клиент
Другие способы
Авторизация по логину/паролю и восстановление предыдущей авторизации - это простые
POST-запросы:
Логин/пароль
url?params...&username=%s&password=%s
в ответ: json {access_token: "SuperTokenNoveoGroup"}
Refresh token
url?params...&refresh_token=SuperTokenNoveoGroup
в ответ: json {access_token: "NewNoveoGroupToken1111AZAZAZA"}
Сложно?
Популярные сети предоставляют SDK
com.twitter.sdk.android
1 //Где-то в Application
2 TwitterAuthConfig authConfig = new TwitterAuthConfig(KEY, SECRET);
3 Fabric.with(/*Context*/, new Twitter(authConfig), /*Kits...*/);
4
5 //Где-то в Fragments/Activity
6 private twitterAuthClient = new TwitterAuthClient();
7
8 public void onLoginClick() {
9 twitterAuthClient.authorize(
10 getMainActivity(),
11 new Callback<TwitterSession>() {
12 void success(Result<TwitterSession> session) {}
13 void failure(TwitterException exception) {}
14 });
15 }
16
17
18 public void onActivityResult(int requestCode, int resultCode, Intent data) {
19 super.onActivityResult(requestCode, resultCode, data);
20 twitterAuthClient.onActivityResult(requestCode, resultCode, data);
21 }
com.facebook.android
1 FacebookSdk.sdkInitialize(this); //Где-то в Application
2
3 //В Activity/Fragment
4 public void onCreate() {
5 facebookCallbackMngr = CallbackManager.Factory.create();
6 LoginManager.getInstance().registerCallback(facebookCallbackMngr,
7 new FacebookCallback<LoginResult>() {
8 public void onSuccess(LoginResult loginResult) {}
9 public void onCancel() {}
10 public void onError(FacebookException e) {}
11 });
12 }
13
14 public void onLoginClick() {
15 LoginManager.getInstance().logInWithReadPermissions(this,
16 Arrays.asList("public_profile", "email", /*Другие разрешения*/));
17 }
18
19 public void onActivityResult(int requestCode, int resultCode, Intent data) {
20 super.onActivityResult(requestCode, resultCode, data);
21 facebookCallbackMngr.onActivityResult(requestCode, resultCode, data);
22 }
Что дальше
CRUD, REST, RPC
REST
REpresentational State Transfer
Используются методы HTTP-запросов
Create - POST
Read - GET
Update - PUT
Delete - DELETE
Пример использования:
GET /user/info — прочитать информацию
PUT /user/info — обновить информацию
GET /item/comments — получить комментарии
GET /item/comments/14 — получить 14ый комментарий
POST /item/comments — добавить комментарий
DELETE /item/comments — очистить комментарии
DELETE /item/comments/14 — удалить 14ый комментарий
RPC
Remote Procedure Calling
Если появляется знак "?" в URL - это уже не REST
Очень похоже на простой вызов процедур:
Название функции — это просто соответствующий URL
Аргументы задаются через Query-параметры
Пример использования:
https://api.vk.com/method/messages.send?
uid=6639244&
message=Preved&
title=Medved&
access_token=NoveoGroupToken
Полезные ссылки
OAuth
OAuth понятным языком
OAuth 2.0
Rest API Tutorial
Login with Twitter
Login with Facebook

More Related Content

Viewers also liked

Canvas
CanvasCanvas
Lec 9
Lec 9Lec 9
Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++
Denis Vasilyev
 
Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)
Noveo
 
Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)
Noveo
 
Lec 12
Lec 12Lec 12
Fragments (Lecture 09 – Fragments)
Fragments (Lecture 09 – Fragments)Fragments (Lecture 09 – Fragments)
Fragments (Lecture 09 – Fragments)
Noveo
 
Thread
ThreadThread
Webinar: Разработка мобильного приложения для заучивания стихов в Delphi
Webinar: Разработка мобильного приложения для заучивания стихов в DelphiWebinar: Разработка мобильного приложения для заучивания стихов в Delphi
Webinar: Разработка мобильного приложения для заучивания стихов в Delphi
Denis Vasilyev
 
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)
Noveo
 
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Noveo
 
Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)
Noveo
 
Webinar: Использование UWP/WinRT Contracts и Notification в Windows 10
Webinar: Использование UWP/WinRT Contracts и Notification в Windows 10Webinar: Использование UWP/WinRT Contracts и Notification в Windows 10
Webinar: Использование UWP/WinRT Contracts и Notification в Windows 10
Denis Vasilyev
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)
Noveo
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)
Noveo
 
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Noveo
 
Database (Lecture 14 – database)
Database (Lecture 14 – database)Database (Lecture 14 – database)
Database (Lecture 14 – database)
Noveo
 
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Denis Vasilyev
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)
Noveo
 
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложенийWebinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Denis Vasilyev
 

Viewers also liked (20)

Canvas
CanvasCanvas
Canvas
 
Lec 9
Lec 9Lec 9
Lec 9
 
Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++
 
Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)Работа с графической подсистемой (Lecture 10 – Graphics)
Работа с графической подсистемой (Lecture 10 – Graphics)
 
Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)
 
Lec 12
Lec 12Lec 12
Lec 12
 
Fragments (Lecture 09 – Fragments)
Fragments (Lecture 09 – Fragments)Fragments (Lecture 09 – Fragments)
Fragments (Lecture 09 – Fragments)
 
Thread
ThreadThread
Thread
 
Webinar: Разработка мобильного приложения для заучивания стихов в Delphi
Webinar: Разработка мобильного приложения для заучивания стихов в DelphiWebinar: Разработка мобильного приложения для заучивания стихов в Delphi
Webinar: Разработка мобильного приложения для заучивания стихов в Delphi
 
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)
 
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
 
Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)
 
Webinar: Использование UWP/WinRT Contracts и Notification в Windows 10
Webinar: Использование UWP/WinRT Contracts и Notification в Windows 10Webinar: Использование UWP/WinRT Contracts и Notification в Windows 10
Webinar: Использование UWP/WinRT Contracts и Notification в Windows 10
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)
 
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
 
Database (Lecture 14 – database)
Database (Lecture 14 – database)Database (Lecture 14 – database)
Database (Lecture 14 – database)
 
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)
 
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложенийWebinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
Webinar: Возможности RAD Studio 10 Seattle для разработки Windows 10 приложений
 

Similar to Работа с соцсетями (Lecture 19 – social)

Android - 15 - Social
Android - 15 - SocialAndroid - 15 - Social
Android - 15 - Social
Noveo
 
Создание Adobe AIR клиента для социальных сетей на примере Twitter
Создание Adobe AIR клиента для социальных сетей на примере TwitterСоздание Adobe AIR клиента для социальных сетей на примере Twitter
Создание Adobe AIR клиента для социальных сетей на примере Twitter
Rostyslav Siryk
 
OAuthоризация и API социальных сетей
OAuthоризация и API социальных сетейOAuthоризация и API социальных сетей
OAuthоризация и API социальных сетейАртём Курапов
 
Интеграция социальных сетей в веб приложения
Интеграция социальных сетей в веб приложенияИнтеграция социальных сетей в веб приложения
Интеграция социальных сетей в веб приложения
Dmitry Putintsev
 
Программируемость корпоративной сети с Cisco APIC-EM
Программируемость корпоративной сети с Cisco APIC-EMПрограммируемость корпоративной сети с Cisco APIC-EM
Программируемость корпоративной сети с Cisco APIC-EM
Cisco Russia
 
Rocket Jump: Project integration into few social networks is not a headache
Rocket Jump: Project integration into few social networks is not a headacheRocket Jump: Project integration into few social networks is not a headache
Rocket Jump: Project integration into few social networks is not a headache
DevGAMM Conference
 
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMS
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMSМихаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMS
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMS
Yandex
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.
Igor Shkulipa
 
Конкурс для разработчиков от Evernote
Конкурс для разработчиков от EvernoteКонкурс для разработчиков от Evernote
Конкурс для разработчиков от Evernote
Evernote
 
Bloch, bodoff руководство. сервлеты
Bloch, bodoff   руководство. сервлетыBloch, bodoff   руководство. сервлеты
Bloch, bodoff руководство. сервлетыalexey1991
 
"API «Битрикс24» — разбор с пристрастием". Александр Сербул, 1С-Битрикс
"API «Битрикс24» — разбор с пристрастием". Александр Сербул, 1С-Битрикс"API «Битрикс24» — разбор с пристрастием". Александр Сербул, 1С-Битрикс
"API «Битрикс24» — разбор с пристрастием". Александр Сербул, 1С-Битрикс
Yandex
 
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Noveo
 
Яндекс.АккаунтМенеджер - Mobius 2015
Яндекс.АккаунтМенеджер - Mobius 2015Яндекс.АккаунтМенеджер - Mobius 2015
Яндекс.АккаунтМенеджер - Mobius 2015
Yury Leonychev
 
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
DataArt
 
17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения
Roman Brovko
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
Igor Shkulipa
 
IT talk Odessa. Device Hive
IT talk Odessa. Device HiveIT talk Odessa. Device Hive
IT talk Odessa. Device Hive
Marina Peregud
 
Auth methods lomalkin
Auth methods lomalkinAuth methods lomalkin
Auth methods lomalkin
Lesha Lomalkin
 
Идентификация и аутентификация - встроенные функции безопасности или задачи с...
Идентификация и аутентификация - встроенные функции безопасности или задачи с...Идентификация и аутентификация - встроенные функции безопасности или задачи с...
Идентификация и аутентификация - встроенные функции безопасности или задачи с...
Mikhail Vanin
 

Similar to Работа с соцсетями (Lecture 19 – social) (20)

Android - 15 - Social
Android - 15 - SocialAndroid - 15 - Social
Android - 15 - Social
 
Создание Adobe AIR клиента для социальных сетей на примере Twitter
Создание Adobe AIR клиента для социальных сетей на примере TwitterСоздание Adobe AIR клиента для социальных сетей на примере Twitter
Создание Adobe AIR клиента для социальных сетей на примере Twitter
 
OAuthоризация и API социальных сетей
OAuthоризация и API социальных сетейOAuthоризация и API социальных сетей
OAuthоризация и API социальных сетей
 
Интеграция социальных сетей в веб приложения
Интеграция социальных сетей в веб приложенияИнтеграция социальных сетей в веб приложения
Интеграция социальных сетей в веб приложения
 
Программируемость корпоративной сети с Cisco APIC-EM
Программируемость корпоративной сети с Cisco APIC-EMПрограммируемость корпоративной сети с Cisco APIC-EM
Программируемость корпоративной сети с Cisco APIC-EM
 
Rocket Jump: Project integration into few social networks is not a headache
Rocket Jump: Project integration into few social networks is not a headacheRocket Jump: Project integration into few social networks is not a headache
Rocket Jump: Project integration into few social networks is not a headache
 
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMS
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMSМихаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMS
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMS
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.
 
Конкурс для разработчиков от Evernote
Конкурс для разработчиков от EvernoteКонкурс для разработчиков от Evernote
Конкурс для разработчиков от Evernote
 
Bloch, bodoff руководство. сервлеты
Bloch, bodoff   руководство. сервлетыBloch, bodoff   руководство. сервлеты
Bloch, bodoff руководство. сервлеты
 
"API «Битрикс24» — разбор с пристрастием". Александр Сербул, 1С-Битрикс
"API «Битрикс24» — разбор с пристрастием". Александр Сербул, 1С-Битрикс"API «Битрикс24» — разбор с пристрастием". Александр Сербул, 1С-Битрикс
"API «Битрикс24» — разбор с пристрастием". Александр Сербул, 1С-Битрикс
 
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
 
Яндекс.АккаунтМенеджер - Mobius 2015
Яндекс.АккаунтМенеджер - Mobius 2015Яндекс.АккаунтМенеджер - Mobius 2015
Яндекс.АккаунтМенеджер - Mobius 2015
 
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
Олег Крут (DataArt) "Что такое интернет вещей и как с ним работать"
 
17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
 
IT talk Odessa. Device Hive
IT talk Odessa. Device HiveIT talk Odessa. Device Hive
IT talk Odessa. Device Hive
 
Auth methods lomalkin
Auth methods lomalkinAuth methods lomalkin
Auth methods lomalkin
 
Идентификация и аутентификация - встроенные функции безопасности или задачи с...
Идентификация и аутентификация - встроенные функции безопасности или задачи с...Идентификация и аутентификация - встроенные функции безопасности или задачи с...
Идентификация и аутентификация - встроенные функции безопасности или задачи с...
 
176023
176023176023
176023
 

More from Noveo

Гуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииГуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрии
Noveo
 
Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)
Noveo
 
Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)
Noveo
 
Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)
Noveo
 
Yii2
Yii2Yii2
Yii2
Noveo
 
Сессии и авторизация
Сессии и авторизацияСессии и авторизация
Сессии и авторизация
Noveo
 
Rest
RestRest
Rest
Noveo
 
PHP basic
PHP basicPHP basic
PHP basic
Noveo
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP Advanced
Noveo
 
PHP and MySQL
PHP and MySQLPHP and MySQL
PHP and MySQL
Noveo
 
MySQL
MySQLMySQL
MySQL
Noveo
 
RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)
Noveo
 
Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)
Noveo
 
Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)
Noveo
 
XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)
Noveo
 
Android - 16 - QR
Android - 16 - QRAndroid - 16 - QR
Android - 16 - QR
Noveo
 
03 коллекции
03   коллекции03   коллекции
03 коллекции
Noveo
 

More from Noveo (17)

Гуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииГуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрии
 
Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)
 
Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)
 
Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)
 
Yii2
Yii2Yii2
Yii2
 
Сессии и авторизация
Сессии и авторизацияСессии и авторизация
Сессии и авторизация
 
Rest
RestRest
Rest
 
PHP basic
PHP basicPHP basic
PHP basic
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP Advanced
 
PHP and MySQL
PHP and MySQLPHP and MySQL
PHP and MySQL
 
MySQL
MySQLMySQL
MySQL
 
RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)
 
Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)
 
Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)
 
XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)XML, JSON (Lecture 11 – XML, JSON)
XML, JSON (Lecture 11 – XML, JSON)
 
Android - 16 - QR
Android - 16 - QRAndroid - 16 - QR
Android - 16 - QR
 
03 коллекции
03   коллекции03   коллекции
03 коллекции
 

Работа с соцсетями (Lecture 19 – social)

  • 2. Работа с соцсетями Почти у всех крупных соцсетей есть сладкая пара: Авторизация через OAuth Запросы через REST API или RPC-style API Дополнительно Может быть свой SDK, но зачастую (например - у Facebook) это обертка поверх того же API Может быть сторонний SDK (пример - Twitter4j)
  • 3. OAuth OAuth - протокол для авторизованного доступа к стороннему API. OAuth позволяет приложению получить ограниченный API-доступ к данным стороннего сервиса, если пользователь даетд обро. Постановка проблемы: Пользователи боятся вводить логины и пароли от своих любимых фейсбуков внутри "левых" приложений. Если же они предоставляют доступ в рамках исходного сервиса - доверие гораздо выше. Можно ограничить права доступа и ограничения.
  • 4. Схема работы с OAuth Отсылаем браузер на страницу аутентификации сервиса, указывая URL для возврата. Пользователь видит родную фейсбучную страничку и не боясь вводит логин/пароль Если все ОК, у пользователя заправшивается разрешение на выдачу прав доступа для приложения Если все ОК, браузер перенаправляет пользователя обратно на URL сервиса Обрабатываем редирект, в параметре редирект-запроса к нам приходит "код доступа" С кодом доступа и "секретом" отправляем запрос на получение токена (ACCESS_TOKEN) Отправляем прикладные запросы используя ACCESS_TOKEN
  • 6. OAuth 2.0 Лучше поддержка не-браузерных приложений Не нужна криптография на клиенте Токены теперь живут не долго + механизм для их обновления Все это достигается благодаря работе по HTTPS.
  • 7. OAuth 2.0 - авторизация Появились разные сценарии для полученяи авторизации авторизация для приложений, имеющих серверную часть авторизация для полностью клиентских приложений авторизация по логину и паролю восстановление предыдущей авторизации
  • 10. Другие способы Авторизация по логину/паролю и восстановление предыдущей авторизации - это простые POST-запросы: Логин/пароль url?params...&username=%s&password=%s в ответ: json {access_token: "SuperTokenNoveoGroup"} Refresh token url?params...&refresh_token=SuperTokenNoveoGroup в ответ: json {access_token: "NewNoveoGroupToken1111AZAZAZA"}
  • 12. com.twitter.sdk.android 1 //Где-то в Application 2 TwitterAuthConfig authConfig = new TwitterAuthConfig(KEY, SECRET); 3 Fabric.with(/*Context*/, new Twitter(authConfig), /*Kits...*/); 4 5 //Где-то в Fragments/Activity 6 private twitterAuthClient = new TwitterAuthClient(); 7 8 public void onLoginClick() { 9 twitterAuthClient.authorize( 10 getMainActivity(), 11 new Callback<TwitterSession>() { 12 void success(Result<TwitterSession> session) {} 13 void failure(TwitterException exception) {} 14 }); 15 } 16 17 18 public void onActivityResult(int requestCode, int resultCode, Intent data) { 19 super.onActivityResult(requestCode, resultCode, data); 20 twitterAuthClient.onActivityResult(requestCode, resultCode, data); 21 }
  • 13. com.facebook.android 1 FacebookSdk.sdkInitialize(this); //Где-то в Application 2 3 //В Activity/Fragment 4 public void onCreate() { 5 facebookCallbackMngr = CallbackManager.Factory.create(); 6 LoginManager.getInstance().registerCallback(facebookCallbackMngr, 7 new FacebookCallback<LoginResult>() { 8 public void onSuccess(LoginResult loginResult) {} 9 public void onCancel() {} 10 public void onError(FacebookException e) {} 11 }); 12 } 13 14 public void onLoginClick() { 15 LoginManager.getInstance().logInWithReadPermissions(this, 16 Arrays.asList("public_profile", "email", /*Другие разрешения*/)); 17 } 18 19 public void onActivityResult(int requestCode, int resultCode, Intent data) { 20 super.onActivityResult(requestCode, resultCode, data); 21 facebookCallbackMngr.onActivityResult(requestCode, resultCode, data); 22 }
  • 15. REST REpresentational State Transfer Используются методы HTTP-запросов Create - POST Read - GET Update - PUT Delete - DELETE Пример использования: GET /user/info — прочитать информацию PUT /user/info — обновить информацию GET /item/comments — получить комментарии GET /item/comments/14 — получить 14ый комментарий POST /item/comments — добавить комментарий DELETE /item/comments — очистить комментарии DELETE /item/comments/14 — удалить 14ый комментарий
  • 16. RPC Remote Procedure Calling Если появляется знак "?" в URL - это уже не REST Очень похоже на простой вызов процедур: Название функции — это просто соответствующий URL Аргументы задаются через Query-параметры Пример использования: https://api.vk.com/method/messages.send? uid=6639244& message=Preved& title=Medved& access_token=NoveoGroupToken
  • 17. Полезные ссылки OAuth OAuth понятным языком OAuth 2.0 Rest API Tutorial Login with Twitter Login with Facebook