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

5,095 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,095
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
11
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

  1. 1. Артём КураповOAUTHОРИЗАЦИЯ И APIСОЦИАЛЬНЫХ СЕТЕЙ
  2. 2. ПузомеркиFacebook – 500 млн (апрель 2010)Twitter – 145 млн (апрель 2010)Вконтакте – 91 млн (октябрь 2010)Linkedin – 75 млн (ноябрь 2010)Одноклассники – 45 млн (февраль 2010)
  3. 3. От перехвата паролей и .. RSS?
  4. 4. Решение – временные пароли Свет мой, Да, разрешаюзеркальце! скажи Ищем всех румяных, милых и белых
  5. 5. Introducing..• Их две версии и разными фичами• Oauth 1.0 reference (RFC5849) http://tools.ietf.org/html/rfc5849• Google, Yahoo, Яндекс тоже в теме• Перед употреблением прочитать показания на упаковке или посоветоваться с аптекарем
  6. 6. Форма следует за содержанием Абстрактная мысль №1 этого доклада
  7. 7. TwitterOAuth 1.0 → https://github.com/abraham/twitteroauth → Redirect.phpConsumer key + secretAccess key + secretSHA1 + Base64
  8. 8. Twitter — API объектыStatuses, Direct messages Users, Friends, Followers Lists, Subscribers Friendships Geo places Trends
  9. 9. Twitter : новое приложение
  10. 10. Схема Oauth
  11. 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. 12. Twitter - впечатления• Баг длиной ID в php (E14)• Plaintext (в последний раз как я заглядывал)
  13. 13. Вопросы?(Про twitter)
  14. 14. Один из семи инструментов пропагандыАбстрактная мысль №2 этого доклада
  15. 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. 16. Facebook – новое приложениеПолучаем Consumer key (App ID + secret) http://developers.facebook.com/setup/
  17. 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
  18. 18. Привилегии
  19. 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 или просто читать JSONhttps://github.com/facebook/php-sdk/
  20. 20. Facebook + Javascript• “GraphAPI”• Javascript c FB глобальным объектом• FB.init()• FB.login() + FB.logout()• FB.getLoginStatus()• FB.api()
  21. 21. Facebook — впечатления• Пароли временные• Нельзя прочитать друзей X пользователя без разрешения даже если пользователь разрешил видеть всем #604 error: Сant 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
  22. 22. Вопросы?(Про facebook)
  23. 23. У каждой веры своё отношение к клонамАбстрактная мысль №3 этого доклада
  24. 24. Вконтакте - объекты Friends Wall Photos Audio, Video Places Offers Questions Notes Pages
  25. 25. Вконтакте• Новый «OpenAPI» (3.0), Iframe плюшки• Javascript с глобальным VK объектом http://vkontakte.ru/js/api/openapi.js• Авторизация на MD5 подписях для PHP/ActionScript
  26. 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. 27. LinkedIN – объекты Person (Company, Education, Recommendation, Position) Connection Share Invitation
  28. 28. LinkedIN• OAuth 1.0• Можно убить access token• Из объектов API – нет полноценных «компаний» но есть школы• Есть JS Api как у Facebook + iframe плюшки
  29. 29. 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());
  30. 30. Одноклассники - объекты Users, Friends Photos Events Messages
  31. 31. Одноклассники• API появилась ~ в октябре 2010• ActionScript, JavaScript, REST API• SSL• auth.login + auth.loginByToken – цель не уловил
  32. 32. Fin— а что такое OpenSocial?

×