SlideShare a Scribd company logo
1 of 32
Артём Курапов

OAUTHОРИЗАЦИЯ И API
СОЦИАЛЬНЫХ СЕТЕЙ
Пузомерки
Facebook – 500 млн (апрель 2010)
Twitter – 145 млн (апрель 2010)
Вконтакте – 91 млн (октябрь 2010)
Linkedin – 75 млн (ноябрь 2010)
Одноклассники – 45 млн (февраль 2010)
От перехвата паролей и .. RSS?
Решение – временные пароли


    Свет мой,
                                        Да, разрешаю
зеркальце! скажи




                   Ищем всех румяных,
                     милых и белых
Introducing..
• Их две версии и разными
  фичами
• Oauth 1.0 reference (RFC5849)
    http://tools.ietf.org/html/rfc5849
• Google, Yahoo, Яндекс тоже в
  теме
•   Перед употреблением прочитать показания на
    упаковке или посоветоваться с аптекарем
Форма следует за содержанием
  Абстрактная мысль №1 этого доклада
Twitter
OAuth 1.0 → https://github.com/abraham/twitteroauth → Redirect.php
Consumer key + secret
Access key + secret
SHA1 + Base64
Twitter — API объекты
Statuses, Direct messages
  Users, Friends, Followers
     Lists, Subscribers
         Friendships
           Geo places
             Trends
Twitter : новое приложение
Схема Oauth
Twitter - Псевдокод
require_once('twitteroauth/twitteroauth.php');
require_once('twitter_oauth/config.php');

$connection = new TwitterOAuth(
   $aSyncAccount[‘consumer_key'],
   $aSyncAccount[‘consumer_secret'],
   $aSyncAccount[‘access_key'], $aSyncAccount[‘access_secret']);

$user = $connection->get('account/verify_credentials');
$arrPosts = $connection->get('statuses/user_timeline');
Twitter - впечатления
• Баг длиной ID в php (E14)
• Plaintext (в последний раз как я заглядывал)
Вопросы?
(Про twitter)
Один из семи инструментов пропаганды
Абстрактная мысль №2 этого доклада
Facebook – объекты
                    User (*), Page (*)
Friends
                              Status
                                Post
          Likes ←
                                Note
                               Photo                   → Comments
                               Video
                                 Link
                         Album (Photos, Picture)
                       Event (Feed, Users, Picture)
                      Group (Feed, Members, Picture)
                             Application
                              Subscription
                                Insights
                                Checkin
Facebook – новое приложение
Получаем Consumer key (App ID + secret)
 http://developers.facebook.com/setup/
Facebook + серверное приложение
• Oauth 2.0 без подписей, но на SSL
• Перенаправляем с client_id, redirect_uri,
  scope = offline_access
  https://graph.facebook.com/oauth/authorize
• Пользователь подтверждает привилегии
• Возвращается с code параметром,
  обмениваем на access_key
  134790075639751|ad22e11d67b06933774e26da-
  712393972|D8PoAPDdvv8onIAf_CasljjK7Pk
Привилегии
Facebook - Псевдокод
if(!$token){
         if($_REQUEST['code']){
             $token = file_get_contents(
    'https://graph.facebook.com/oauth/access_token?client_id='.CONSUMER_KEY.'&clie
    nt_secret='.CONSUMER_SECRET.'&code='.$_REQUEST['code'].'&redirect_uri='.CONSUM
    ER_URL);
         }
         else header('Location:
    https://graph.facebook.com/oauth/authorize?client_id='.CONSUMER_KEY.'&scope=of
    fline_access,create_event,publish_stream,user_events&redirect_uri='.CONSUMER_U
    RL);
    }

Дальше можно использовать GraphAPI через PHP SDK или просто читать JSON
https://github.com/facebook/php-sdk/
Facebook + Javascript
• “GraphAPI”
• Javascript c FB глобальным объектом
•   FB.init()
•   FB.login() + FB.logout()
•   FB.getLoginStatus()
•   FB.api()
Facebook — впечатления
• Пароли временные
• Нельзя прочитать друзей X пользователя без разрешения
  даже если пользователь разрешил видеть всем
  #604 error: Сan't lookup all friends of XXXXXX. Can only lookup for the logged in user (XXXXXX), or
  friends of the logged in user with the appropriate permission
Вопросы?
(Про facebook)
У каждой веры своё отношение к клонам

Абстрактная мысль №3 этого доклада
Вконтакте - объекты
       Friends
        Wall
        Photos
      Audio, Video
          Places
          Offers
         Questions
           Notes
           Pages
Вконтакте
• Новый «OpenAPI» (3.0), Iframe плюшки
• Javascript с глобальным VK объектом
  http://vkontakte.ru/js/api/openapi.js
• Авторизация на MD5 подписях для
  PHP/ActionScript
Вконтакте - псевдокод
// старый по логин-паролю
$vkontakte = new vkuserapi ($aSyncAccount['login'],
   $aSyncAccount[‘password']);
$vkontakte->call ('set_activity',array('ts'=>time(),'text'=>
   $strMessage));

// новая через ID приложения
$VK = new vkapi($api_id, $secret_key);
$resp = $VK->api('getProfiles', array('uids'=>'1, 2'));
LinkedIN – объекты

            Person
  (Company, Education, Recommendation, Position)

            Connection
                  Share
                 Invitation
LinkedIN
• OAuth 1.0
• Можно убить access token
• Из объектов API – нет полноценных
  «компаний» но есть школы
• Есть JS Api как у Facebook + iframe плюшки
LinkedIN – псевдокод c PEAR
require_once 'HTTP/OAuth.php‘;    require_once 'HTTP/OAuth/Consumer/Request.php';
require_once 'HTTP/Request2.php‘; require_once 'HTTP/OAuth/Consumer.php';
$oRequest = new HTTP_Request2;
$oRequest->setHeader('Accept-Encoding', '.*');
$oRequest->setConfig('ssl_verify_peer', false);
$oRequest->setConfig('ssl_verify_host', false);
$oAuthRequest = new HTTP_OAuth_Consumer_Request;
$oAuthRequest->accept($oRequest);

$oConsumer = new HTTP_OAuth_Consumer( $aSyncAccount['consumer_key'],
    $aSyncAccount['consumer_secret'], $aSyncAccount['access_token'],
    $aSyncAccount['access_token_secret'] );
$oConsumer->accept($oAuthRequest);

$oResponse = $consumer->sendRequest('http://api.linkedin.com/v1/people-
    search:(people:(id,first-name,last-name,headline,location,industry,distance,public-profile-
    url,picture-url,positions,educations),num-results)?keywords='.
    rawurlencode('Артём Курапов'), array(), 'GET');

$oXml = simplexml_load_string($oResponse->getBody());
Одноклассники - объекты

     Users, Friends
        Photos
         Events
         Messages
Одноклассники
•   API появилась ~ в октябре 2010
•   ActionScript, JavaScript, REST API
•   SSL
•   auth.login + auth.loginByToken – цель не уловил
Fin

— а что такое OpenSocial?

More Related Content

Viewers also liked

Moral Fiber Organizer
Moral Fiber OrganizerMoral Fiber Organizer
Moral Fiber Organizer
lilgreenbb
 
THE ENCHANTED FROG
THE ENCHANTED FROGTHE ENCHANTED FROG
THE ENCHANTED FROG
guest1f9363
 
Social Media Tips Presentation
Social Media Tips PresentationSocial Media Tips Presentation
Social Media Tips Presentation
iyanuquiroga
 
Perceptions On The Effectiveness Of Pictorial Warnings
Perceptions On The Effectiveness Of Pictorial WarningsPerceptions On The Effectiveness Of Pictorial Warnings
Perceptions On The Effectiveness Of Pictorial Warnings
PRN USM
 
First Half Of Course
First Half Of CourseFirst Half Of Course
First Half Of Course
rpizano12
 
1to1 Marketing System Preso[1]
1to1 Marketing System Preso[1]1to1 Marketing System Preso[1]
1to1 Marketing System Preso[1]
morrisfamily8lv4
 
Venecia Diferente / Venezia differente
Venecia Diferente / Venezia differenteVenecia Diferente / Venezia differente
Venecia Diferente / Venezia differente
Adriana Herrerias
 

Viewers also liked (20)

Moral Fiber Organizer
Moral Fiber OrganizerMoral Fiber Organizer
Moral Fiber Organizer
 
Immigrants And Cities
Immigrants And CitiesImmigrants And Cities
Immigrants And Cities
 
Broadvox Case Studies
Broadvox Case StudiesBroadvox Case Studies
Broadvox Case Studies
 
Yes, please.
Yes, please.Yes, please.
Yes, please.
 
THE ENCHANTED FROG
THE ENCHANTED FROGTHE ENCHANTED FROG
THE ENCHANTED FROG
 
H1n1
H1n1H1n1
H1n1
 
Cmc Laboratories Client Presentation 2009
Cmc Laboratories Client Presentation 2009Cmc Laboratories Client Presentation 2009
Cmc Laboratories Client Presentation 2009
 
Social Media Tips Presentation
Social Media Tips PresentationSocial Media Tips Presentation
Social Media Tips Presentation
 
Perceptions On The Effectiveness Of Pictorial Warnings
Perceptions On The Effectiveness Of Pictorial WarningsPerceptions On The Effectiveness Of Pictorial Warnings
Perceptions On The Effectiveness Of Pictorial Warnings
 
Retail 2.0
Retail 2.0Retail 2.0
Retail 2.0
 
First Half Of Course
First Half Of CourseFirst Half Of Course
First Half Of Course
 
1to1 Marketing System Preso[1]
1to1 Marketing System Preso[1]1to1 Marketing System Preso[1]
1to1 Marketing System Preso[1]
 
Ny State Lote Check Point A Exam, Xu Li
Ny State Lote Check Point A Exam, Xu LiNy State Lote Check Point A Exam, Xu Li
Ny State Lote Check Point A Exam, Xu Li
 
Acg Distinguished Imaging Slides
Acg Distinguished Imaging SlidesAcg Distinguished Imaging Slides
Acg Distinguished Imaging Slides
 
Venecia Diferente / Venezia differente
Venecia Diferente / Venezia differenteVenecia Diferente / Venezia differente
Venecia Diferente / Venezia differente
 
Οργάνωση και λειτουργία της Δημοτικής Βιβλιοθήκης Πάρου μέσα από συνεργασίες ...
Οργάνωση και λειτουργία της Δημοτικής Βιβλιοθήκης Πάρου μέσα από συνεργασίες ...Οργάνωση και λειτουργία της Δημοτικής Βιβλιοθήκης Πάρου μέσα από συνεργασίες ...
Οργάνωση και λειτουργία της Δημοτικής Βιβλιοθήκης Πάρου μέσα από συνεργασίες ...
 
Forum september 2011 chang qian's presentation
Forum september 2011 chang qian's presentationForum september 2011 chang qian's presentation
Forum september 2011 chang qian's presentation
 
Pedagogia vocal
Pedagogia vocalPedagogia vocal
Pedagogia vocal
 
Sistemas Del Ser Humano
Sistemas Del Ser HumanoSistemas Del Ser Humano
Sistemas Del Ser Humano
 
Δίκτυο βιβλιοθηκών Δήμου Βόλου: Εμπειρίες και πρακτικές
Δίκτυο  βιβλιοθηκών Δήμου Βόλου: Εμπειρίες και πρακτικέςΔίκτυο  βιβλιοθηκών Δήμου Βόλου: Εμπειρίες και πρακτικές
Δίκτυο βιβλιοθηκών Δήμου Βόλου: Εμπειρίες και πρακτικές
 

Similar to OAuthоризация и API социальных сетей

Сам себе АНБ, API социальных сетей
Сам себе АНБ, API социальных сетейСам себе АНБ, API социальных сетей
Сам себе АНБ, API социальных сетей
Open-IT
 
Общая модель аутентификации HTTP-сообщений на основе хэш-функций в веб-прилож...
Общая модель аутентификации HTTP-сообщений на основе хэш-функций в веб-прилож...Общая модель аутентификации HTTP-сообщений на основе хэш-функций в веб-прилож...
Общая модель аутентификации HTTP-сообщений на основе хэш-функций в веб-прилож...
Denis Kolegov
 
Общая модель аутентификации HTTP-сообщений на основе хэш- функций в веб-прил...
Общая модель аутентификации  HTTP-сообщений на основе хэш- функций в веб-прил...Общая модель аутентификации  HTTP-сообщений на основе хэш- функций в веб-прил...
Общая модель аутентификации HTTP-сообщений на основе хэш- функций в веб-прил...
Positive Hack Days
 
Social networks analisys - github API
Social networks analisys - github APISocial networks analisys - github API
Social networks analisys - github API
baturin
 

Similar to OAuthоризация и API социальных сетей (20)

Cоздание приложений со знанием Perl
Cоздание приложений со знанием PerlCоздание приложений со знанием Perl
Cоздание приложений со знанием Perl
 
Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)
 
Конкурс для разработчиков от Evernote
Конкурс для разработчиков от EvernoteКонкурс для разработчиков от Evernote
Конкурс для разработчиков от Evernote
 
Android - 15 - Social
Android - 15 - SocialAndroid - 15 - Social
Android - 15 - Social
 
Сам себе АНБ, API социальных сетей
Сам себе АНБ, API социальных сетейСам себе АНБ, API социальных сетей
Сам себе АНБ, API социальных сетей
 
Интеграция социальных сетей в веб приложения
Интеграция социальных сетей в веб приложенияИнтеграция социальных сетей в веб приложения
Интеграция социальных сетей в веб приложения
 
Тестирование Web API
Тестирование Web APIТестирование Web API
Тестирование Web API
 
Auth methods lomalkin
Auth methods lomalkinAuth methods lomalkin
Auth methods lomalkin
 
Создание Adobe AIR клиента для социальных сетей на примере Twitter
Создание Adobe AIR клиента для социальных сетей на примере TwitterСоздание Adobe AIR клиента для социальных сетей на примере Twitter
Создание Adobe AIR клиента для социальных сетей на примере Twitter
 
Crazy owl yii1=> yii2
Crazy owl yii1=> yii2Crazy owl yii1=> yii2
Crazy owl yii1=> yii2
 
Sphinx
SphinxSphinx
Sphinx
 
Flask, rest and data
Flask, rest and dataFlask, rest and data
Flask, rest and data
 
WebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий ОстапенкоWebAuthn в реальной жизни, Анатолий Остапенко
WebAuthn в реальной жизни, Анатолий Остапенко
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)
 
Яндекс.АккаунтМенеджер - Mobius 2015
Яндекс.АккаунтМенеджер - Mobius 2015Яндекс.АккаунтМенеджер - Mobius 2015
Яндекс.АккаунтМенеджер - Mobius 2015
 
Общая модель аутентификации HTTP-сообщений на основе хэш-функций в веб-прилож...
Общая модель аутентификации HTTP-сообщений на основе хэш-функций в веб-прилож...Общая модель аутентификации HTTP-сообщений на основе хэш-функций в веб-прилож...
Общая модель аутентификации HTTP-сообщений на основе хэш-функций в веб-прилож...
 
Общая модель аутентификации HTTP-сообщений на основе хэш- функций в веб-прил...
Общая модель аутентификации  HTTP-сообщений на основе хэш- функций в веб-прил...Общая модель аутентификации  HTTP-сообщений на основе хэш- функций в веб-прил...
Общая модель аутентификации HTTP-сообщений на основе хэш- функций в веб-прил...
 
"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС
 
Social networks analisys - github API
Social networks analisys - github APISocial networks analisys - github API
Social networks analisys - github API
 
Пластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать житьПластилиновый код: как перестать кодить и начать жить
Пластилиновый код: как перестать кодить и начать жить
 

More from Артём Курапов (9)

Scaling GraphQL Subscriptions
Scaling GraphQL SubscriptionsScaling GraphQL Subscriptions
Scaling GraphQL Subscriptions
 
Variety of automated tests
Variety of automated testsVariety of automated tests
Variety of automated tests
 
Symfony
SymfonySymfony
Symfony
 
Bacbkone js
Bacbkone jsBacbkone js
Bacbkone js
 
Php storm intro
Php storm introPhp storm intro
Php storm intro
 
Android intro
Android introAndroid intro
Android intro
 
В облаке AWS
В облаке AWSВ облаке AWS
В облаке AWS
 
Devclub hääletamine
Devclub hääletamineDevclub hääletamine
Devclub hääletamine
 
Visualization of evolutionary cascades of messages using force-directed graphs
Visualization of evolutionary cascades of messages using force-directed graphsVisualization of evolutionary cascades of messages using force-directed graphs
Visualization of evolutionary cascades of messages using force-directed graphs
 

OAuthоризация и API социальных сетей

  • 1. Артём Курапов OAUTHОРИЗАЦИЯ И API СОЦИАЛЬНЫХ СЕТЕЙ
  • 2. Пузомерки Facebook – 500 млн (апрель 2010) Twitter – 145 млн (апрель 2010) Вконтакте – 91 млн (октябрь 2010) Linkedin – 75 млн (ноябрь 2010) Одноклассники – 45 млн (февраль 2010)
  • 4. Решение – временные пароли Свет мой, Да, разрешаю зеркальце! скажи Ищем всех румяных, милых и белых
  • 5. Introducing.. • Их две версии и разными фичами • Oauth 1.0 reference (RFC5849) http://tools.ietf.org/html/rfc5849 • Google, Yahoo, Яндекс тоже в теме • Перед употреблением прочитать показания на упаковке или посоветоваться с аптекарем
  • 6. Форма следует за содержанием Абстрактная мысль №1 этого доклада
  • 7. Twitter OAuth 1.0 → https://github.com/abraham/twitteroauth → Redirect.php Consumer key + secret Access key + secret SHA1 + Base64
  • 8. Twitter — API объекты Statuses, Direct messages Users, Friends, Followers Lists, Subscribers Friendships Geo places Trends
  • 9. Twitter : новое приложение
  • 11. Twitter - Псевдокод require_once('twitteroauth/twitteroauth.php'); require_once('twitter_oauth/config.php'); $connection = new TwitterOAuth( $aSyncAccount[‘consumer_key'], $aSyncAccount[‘consumer_secret'], $aSyncAccount[‘access_key'], $aSyncAccount[‘access_secret']); $user = $connection->get('account/verify_credentials'); $arrPosts = $connection->get('statuses/user_timeline');
  • 12. Twitter - впечатления • Баг длиной ID в php (E14) • Plaintext (в последний раз как я заглядывал)
  • 14. Один из семи инструментов пропаганды Абстрактная мысль №2 этого доклада
  • 15. Facebook – объекты User (*), Page (*) Friends Status Post Likes ← Note Photo → Comments Video Link Album (Photos, Picture) Event (Feed, Users, Picture) Group (Feed, Members, Picture) Application Subscription Insights Checkin
  • 16. Facebook – новое приложение Получаем Consumer key (App ID + secret) http://developers.facebook.com/setup/
  • 17. Facebook + серверное приложение • Oauth 2.0 без подписей, но на SSL • Перенаправляем с client_id, redirect_uri, scope = offline_access https://graph.facebook.com/oauth/authorize • Пользователь подтверждает привилегии • Возвращается с code параметром, обмениваем на access_key 134790075639751|ad22e11d67b06933774e26da- 712393972|D8PoAPDdvv8onIAf_CasljjK7Pk
  • 19. Facebook - Псевдокод if(!$token){ if($_REQUEST['code']){ $token = file_get_contents( 'https://graph.facebook.com/oauth/access_token?client_id='.CONSUMER_KEY.'&clie nt_secret='.CONSUMER_SECRET.'&code='.$_REQUEST['code'].'&redirect_uri='.CONSUM ER_URL); } else header('Location: https://graph.facebook.com/oauth/authorize?client_id='.CONSUMER_KEY.'&scope=of fline_access,create_event,publish_stream,user_events&redirect_uri='.CONSUMER_U RL); } Дальше можно использовать GraphAPI через PHP SDK или просто читать JSON https://github.com/facebook/php-sdk/
  • 20. Facebook + Javascript • “GraphAPI” • Javascript c FB глобальным объектом • FB.init() • FB.login() + FB.logout() • FB.getLoginStatus() • FB.api()
  • 21. Facebook — впечатления • Пароли временные • Нельзя прочитать друзей X пользователя без разрешения даже если пользователь разрешил видеть всем #604 error: Сan't lookup all friends of XXXXXX. Can only lookup for the logged in user (XXXXXX), or friends of the logged in user with the appropriate permission
  • 23. У каждой веры своё отношение к клонам Абстрактная мысль №3 этого доклада
  • 24. Вконтакте - объекты Friends Wall Photos Audio, Video Places Offers Questions Notes Pages
  • 25. Вконтакте • Новый «OpenAPI» (3.0), Iframe плюшки • Javascript с глобальным VK объектом http://vkontakte.ru/js/api/openapi.js • Авторизация на MD5 подписях для PHP/ActionScript
  • 26. Вконтакте - псевдокод // старый по логин-паролю $vkontakte = new vkuserapi ($aSyncAccount['login'], $aSyncAccount[‘password']); $vkontakte->call ('set_activity',array('ts'=>time(),'text'=> $strMessage)); // новая через ID приложения $VK = new vkapi($api_id, $secret_key); $resp = $VK->api('getProfiles', array('uids'=>'1, 2'));
  • 27. LinkedIN – объекты Person (Company, Education, Recommendation, Position) Connection Share Invitation
  • 28. LinkedIN • OAuth 1.0 • Можно убить access token • Из объектов API – нет полноценных «компаний» но есть школы • Есть JS Api как у Facebook + iframe плюшки
  • 29. LinkedIN – псевдокод c PEAR require_once 'HTTP/OAuth.php‘; require_once 'HTTP/OAuth/Consumer/Request.php'; require_once 'HTTP/Request2.php‘; require_once 'HTTP/OAuth/Consumer.php'; $oRequest = new HTTP_Request2; $oRequest->setHeader('Accept-Encoding', '.*'); $oRequest->setConfig('ssl_verify_peer', false); $oRequest->setConfig('ssl_verify_host', false); $oAuthRequest = new HTTP_OAuth_Consumer_Request; $oAuthRequest->accept($oRequest); $oConsumer = new HTTP_OAuth_Consumer( $aSyncAccount['consumer_key'], $aSyncAccount['consumer_secret'], $aSyncAccount['access_token'], $aSyncAccount['access_token_secret'] ); $oConsumer->accept($oAuthRequest); $oResponse = $consumer->sendRequest('http://api.linkedin.com/v1/people- search:(people:(id,first-name,last-name,headline,location,industry,distance,public-profile- url,picture-url,positions,educations),num-results)?keywords='. rawurlencode('Артём Курапов'), array(), 'GET'); $oXml = simplexml_load_string($oResponse->getBody());
  • 30. Одноклассники - объекты Users, Friends Photos Events Messages
  • 31. Одноклассники • API появилась ~ в октябре 2010 • ActionScript, JavaScript, REST API • SSL • auth.login + auth.loginByToken – цель не уловил
  • 32. Fin — а что такое OpenSocial?