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

17

Click here to load reader

Upload: noveo

Post on 14-Apr-2017

80 views

Category:

Education


1 download

TRANSCRIPT

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

Работа с cоцсетямиAndroid

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

Работа с соцсетями

Почти у всех крупных соцсетей есть сладкая пара:

Авторизация через OAuthЗапросы через REST API или RPC-style API

Дополнительно

Может быть свой SDK, но зачастую (например - у Facebook) это обертка поверх того же APIМожет быть сторонний SDK (пример - Twitter4j)

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

OAuth

OAuth - протокол для авторизованного доступа к стороннему API. OAuth позволяетприложению получить ограниченный API-доступ к данным стороннего сервиса, если

пользователь даетд обро.

Постановка проблемы:

Пользователи боятся вводить логины и пароли от своих любимых фейсбуков внутри"левых" приложений.Если же они предоставляют доступ в рамках исходного сервиса - доверие гораздо выше.Можно ограничить права доступа и ограничения.

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

Схема работы с OAuth

Отсылаем браузер на страницу аутентификации сервиса, указывая URL для возврата.Пользователь видит родную фейсбучную страничку и не боясь вводит логин/парольЕсли все ОК, у пользователя заправшивается разрешение на выдачу прав доступа дляприложенияЕсли все ОК, браузер перенаправляет пользователя обратно на URL сервисаОбрабатываем редирект, в параметре редирект-запроса к нам приходит "код доступа"С кодом доступа и "секретом" отправляем запрос на получение токена (ACCESS_TOKEN)Отправляем прикладные запросы используя ACCESS_TOKEN

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

Наглядная схема

Flickr Twitter

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

OAuth 2.0

Лучше поддержка не-браузерных приложенийНе нужна криптография на клиентеТокены теперь живут не долго + механизм для их обновления

Все это достигается благодаря работе по HTTPS.

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

OAuth 2.0 - авторизация

Появились разные сценарии для полученяи авторизации

авторизация для приложений, имеющих серверную частьавторизация для полностью клиентских приложенийавторизация по логину и паролювосстановление предыдущей авторизации

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

Клиент + Сервер

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

Только клиент

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

Другие способы

Авторизация по логину/паролю и восстановление предыдущей авторизации - это простыеPOST-запросы:

Логин/пароль

url?params...&username=%s&password=%s в ответ: json {access_token: "SuperTokenNoveoGroup"}

Refresh token

url?params...&refresh_token=SuperTokenNoveoGroup в ответ: json {access_token: "NewNoveoGroupToken1111AZAZAZA"}

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

Сложно?

Популярные сети предоставляют SDK

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

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 }

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

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 }

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

Что дальше

CRUD, REST, RPC

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

REST

REpresentational State Transfer Используются методы HTTP-запросов

Create - POSTRead - GETUpdate - PUTDelete - 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ый комментарий

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

RPC

Remote Procedure Calling

Если появляется знак "?" в URL - это уже не RESTОчень похоже на простой вызов процедур:

Название функции — это просто соответствующий URLАргументы задаются через Query-параметры

Пример использования: https://api.vk.com/method/messages.send?

uid=6639244& message=Preved&

title=Medved& access_token=NoveoGroupToken