330 likes | 569 Views
Артём Курапов. O auth оризация и API социальн ы х сетЕЙ. Пузомерки. Facebook – 500 млн ( апрель 2010 ) Twitter – 145 млн ( апрель 2010 ) Вконтакте – 91 млн (октябрь 2010) Linkedin – 75 млн (ноябрь 2010) Одноклассники – 45 млн (февраль 2010). От перехвата паролей и .. RSS ?.
E N D
Артём Курапов Oauthоризация и API социальных сетЕЙ
Пузомерки Facebook – 500 млн (апрель 2010) Twitter – 145 млн (апрель 2010) Вконтакте – 91 млн (октябрь 2010) Linkedin – 75 млн (ноябрь 2010) Одноклассники – 45 млн (февраль 2010)
Решение – временные пароли Свет мой, зеркальце! скажи Да, разрешаю Ищем всех румяных, милых и белых
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 - Псевдокод 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(*) Status Post Note Photo Video Link Album (Photos, Picture) Event (Feed, Users, Picture) Group(Feed, Members, Picture) Application Subscription Insights Checkin Friends Likes ← → Comments
Facebook – новое приложение Получаем Consumer key (App ID + secret)http://developers.facebook.com/setup/
Facebook +серверное приложение • Oauth 2.0 без подписей, но на SSL • Перенаправляем с client_id, redirect_uri, scope = offline_accesshttps://graph.facebook.com/oauth/authorize • Пользователь подтверждает привилегии • Возвращается с codeпараметром, обмениваем на access_key134790075639751|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.'&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 или просто читать 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), orfriends 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?