oauth.pptx
Transcript of oauth.pptx
![Page 1: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/1.jpg)
OAUTHОРИЗАЦИЯ И API СОЦИАЛЬНЫХ СЕТЕЙ
Артём Курапов
![Page 2: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/2.jpg)
Пузомерки
Facebook – 500 млн (апрель 2010)Twitter – 145 млн (апрель 2010)Вконтакте – 91 млн (октябрь 2010)Linkedin – 75 млн (ноябрь 2010)Одноклассники – 45 млн (февраль 2010)
![Page 3: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/3.jpg)
От перехвата паролей и .. RSS?
![Page 4: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/4.jpg)
Решение – временные пароли
Свет мой, зеркальце! скажи
Ищем всех румяных, милых и белых
Да, разрешаю
![Page 5: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/5.jpg)
Introducing..
• Их две версии и разными фичами
• Oauth 1.0 reference (RFC5849)http://tools.ietf.org/html/rfc5849
• Google, Yahoo, Яндекс тоже в теме
• Перед употреблением прочитать показания на упаковке или посоветоваться с аптекарем
![Page 6: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/6.jpg)
Форма следует за содержаниемАбстрактная мысль №1 этого доклада
![Page 7: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/7.jpg)
OAuth 1.0 → https://github.com/abraham/twitteroauth → Redirect.php
Consumer key + secretAccess key + secretSHA1 + Base64
![Page 8: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/8.jpg)
Twitter — API объекты
Statuses, Direct messagesUsers, Friends, Followers
Lists, SubscribersFriendships
Geo placesTrends
![Page 9: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/9.jpg)
Twitter : новое приложение
![Page 10: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/10.jpg)
Схема Oauth
![Page 11: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/11.jpg)
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');
![Page 12: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/12.jpg)
Twitter - впечатления
• Баг длиной ID в php (E14)• Plaintext (в последний раз как я заглядывал)
![Page 13: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/13.jpg)
Вопросы?
(Про twitter)
![Page 14: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/14.jpg)
Один из семи инструментов пропагандыАбстрактная мысль №2 этого доклада
![Page 15: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/15.jpg)
Facebook – объекты
User (*), Page (*)Status
PostNote
PhotoVideoLink
Album (Photos, Picture)
Event (Feed, Users, Picture)
Group (Feed, Members, Picture)
ApplicationSubscription
InsightsCheckin
→ CommentsLikes ←
Friends
![Page 16: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/16.jpg)
Facebook – новое приложение
Получаем Consumer key (App ID + secret)http://developers.facebook.com/setup/
![Page 17: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/17.jpg)
Facebook + серверное приложение
• Oauth 2.0 без подписей, но на SSL• Перенаправляем с client_id, redirect_uri,
scope = offline_accesshttps://graph.facebook.com/oauth/authorize
• Пользователь подтверждает привилегии• Возвращается с code параметром,
обмениваем на access_key
134790075639751|ad22e11d67b06933774e26da-712393972|D8PoAPDdvv8onIAf_CasljjK7Pk
![Page 18: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/18.jpg)
Привилегии
![Page 19: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/19.jpg)
Facebook - Псевдокодif(!$token){
if($_REQUEST['code']){ $token = file_get_contents( 'https://graph.facebook.com/oauth/access_token?client_id='.CONSUMER_KEY.'&client_secret='.CONSUMER_SECRET.'&code='.$_REQUEST['code'].'&redirect_uri='.CONSUMER_URL); } else header('Location: https://graph.facebook.com/oauth/authorize?client_id='.CONSUMER_KEY.'&scope=offline_access,create_event,publish_stream,user_events&redirect_uri='.CONSUMER_URL);}
Дальше можно использовать GraphAPI через PHP SDK или просто читать JSONhttps://github.com/facebook/php-sdk/
![Page 20: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/20.jpg)
Facebook + Javascript
• “GraphAPI”• Javascript c FB глобальным объектом• FB.init()• FB.login() + FB.logout()• FB.getLoginStatus()• FB.api()
![Page 21: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/21.jpg)
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
![Page 22: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/22.jpg)
Вопросы?
(Про facebook)
![Page 23: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/23.jpg)
У каждой веры своё отношение к клонам
Абстрактная мысль №3 этого доклада
![Page 24: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/24.jpg)
Вконтакте - объекты
FriendsWallPhotos
Audio, VideoPlacesOffers
QuestionsNotesPages
![Page 25: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/25.jpg)
Вконтакте
• Новый «OpenAPI» (3.0), Iframe плюшки• Javascript с глобальным VK объектом
http://vkontakte.ru/js/api/openapi.js
• Авторизация на MD5 подписях для PHP/ActionScript
![Page 26: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/26.jpg)
Вконтакте - псевдокод// старый по логин-паролю$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'));
![Page 27: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/27.jpg)
LinkedIN – объекты
Person(Company, Education, Recommendation, Position)
ConnectionShare
Invitation
![Page 28: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/28.jpg)
• OAuth 1.0• Можно убить access token• Из объектов API – нет полноценных
«компаний» но есть школы• Есть JS Api как у Facebook + iframe плюшки
![Page 29: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/29.jpg)
LinkedIN – псевдокод c PEARrequire_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());
![Page 30: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/30.jpg)
Одноклассники - объекты
Users, FriendsPhotosEventsMessages
![Page 31: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/31.jpg)
Одноклассники
• API появилась ~ в октябре 2010• ActionScript, JavaScript, REST API• SSL• auth.login + auth.loginByToken – цель не уловил
![Page 32: oauth.pptx](https://reader034.fdocuments.us/reader034/viewer/2022052506/5571f8c549795991698e0b51/html5/thumbnails/32.jpg)
Fin
— а что такое OpenSocial?