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

PPTX
Артём Журавлёв «OAuth для .NET»
PPTX
технический seo аудит
PDF
Atlassian Plugins 3: Новая платформа - новые возможности
PDF
Android - 05 - Android basics
PDF
PDF
PDF
Системы автоматизированной сборки (Lecture 05 – gradle)
PPTX
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)
Артём Журавлёв «OAuth для .NET»
технический seo аудит
Atlassian Plugins 3: Новая платформа - новые возможности
Android - 05 - Android basics
Системы автоматизированной сборки (Lecture 05 – gradle)
DIOR-DNA, Anton Zvonov, Part 1, Activities (жизненный цикл)

Viewers also liked (20)

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

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

PDF
Android - 15 - Social
PPTX
OAuthоризация и API социальных сетей
PPT
Сам себе АНБ, API социальных сетей
PDF
Интеграция социальных сетей в веб приложения
PDF
Использование Firebase для создания простого мессенджера — Алидибир Ахбулатов
PPTX
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
Android - 15 - Social
OAuthоризация и API социальных сетей
Сам себе АНБ, API социальных сетей
Интеграция социальных сетей в веб приложения
Использование Firebase для создания простого мессенджера — Алидибир Ахбулатов
Евгений Сатуров. Firebase в Android-разработке: основные возможности. РИФ-Вор...
Ad

More from Noveo (18)

PPTX
Гуманитарные специальности в IT-индустрии
PPTX
Box model, display and position (HTML5 тема 07 - box model, display position)
PPTX
Основы CSS (HTML5 тема 02 - основы CSS)
PPTX
Структура HTML документа (HTML5 тема 01 - структура html документа)
PPTX
Yii2
PPTX
Сессии и авторизация
PPTX
Rest
PPTX
PHP basic
PPTX
PHP Advanced
PPTX
PHP and MySQL
PPTX
MySQL
PDF
RxJava+RxAndroid (Lecture 20 – rx java)
PDF
Работа с геоданными (Lecture 18 – geolocation)
PDF
Material Design (Lecture 15 – material design)
PDF
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
PDF
XML, JSON (Lecture 11 – XML, JSON)
PDF
Android - 16 - QR
PDF
03 коллекции
Гуманитарные специальности в IT-индустрии
Box model, display and position (HTML5 тема 07 - box model, display position)
Основы CSS (HTML5 тема 02 - основы CSS)
Структура HTML документа (HTML5 тема 01 - структура html документа)
Yii2
Сессии и авторизация
Rest
PHP basic
PHP Advanced
PHP and MySQL
MySQL
RxJava+RxAndroid (Lecture 20 – rx java)
Работа с геоданными (Lecture 18 – geolocation)
Material Design (Lecture 15 – material design)
Многопоточность, работа с сетью (Lecture 12 – multithreading, network)
XML, JSON (Lecture 11 – XML, JSON)
Android - 16 - QR
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