32
OAUTHОРИЗАЦИЯ И API СОЦИАЛЬНЫХ СЕТЕЙ Артём Курапов

O auth оризация и API социальн ы х сетЕЙ

  • Upload
    hailey

  • View
    49

  • Download
    3

Embed Size (px)

DESCRIPTION

Артём Курапов. O auth оризация и API социальн ы х сетЕЙ. Пузомерки. Facebook – 500 млн ( апрель 2010 ) Twitter – 145 млн ( апрель 2010 ) Вконтакте – 91 млн (октябрь 2010) Linkedin – 75 млн (ноябрь 2010) Одноклассники – 45 млн (февраль 2010). От перехвата паролей и .. RSS ?. - PowerPoint PPT Presentation

Citation preview

Page 1: O auth оризация  и  API  социальн ы х сетЕЙ

OAUTHОРИЗАЦИЯ И API СОЦИАЛЬНЫХ СЕТЕЙ

Артём Курапов

Page 2: O auth оризация  и  API  социальн ы х сетЕЙ

Пузомерки

Facebook – 500 млн (апрель 2010)Twitter – 145 млн (апрель 2010)Вконтакте – 91 млн (октябрь 2010)Linkedin – 75 млн (ноябрь 2010)Одноклассники – 45 млн (февраль 2010)

Page 3: O auth оризация  и  API  социальн ы х сетЕЙ

От перехвата паролей и .. RSS?

Page 4: O auth оризация  и  API  социальн ы х сетЕЙ

Решение – временные пароли

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

Ищем всех румяных, милых и белых

Да, разрешаю

Page 5: O auth оризация  и  API  социальн ы х сетЕЙ

Introducing..

• Их две версии и разными фичами

• Oauth 1.0 reference (RFC5849)http://tools.ietf.org/html/rfc5849

• Google, Yahoo, Яндекс тоже в теме

• Перед употреблением прочитать показания на упаковке или посоветоваться с аптекарем

Page 6: O auth оризация  и  API  социальн ы х сетЕЙ

Форма следует за содержаниемАбстрактная мысль №1 этого доклада

Page 7: O auth оризация  и  API  социальн ы х сетЕЙ

Twitter

OAuth 1.0 → https://github.com/abraham/twitteroauth → Redirect.php

Consumer key + secretAccess key + secretSHA1 + Base64

Page 8: O auth оризация  и  API  социальн ы х сетЕЙ

Twitter — API объекты

Statuses, Direct messagesUsers, Friends, Followers

Lists, SubscribersFriendships

Geo placesTrends

Page 9: O auth оризация  и  API  социальн ы х сетЕЙ

Twitter : новое приложение

Page 10: O auth оризация  и  API  социальн ы х сетЕЙ

Схема Oauth

Page 11: O auth оризация  и  API  социальн ы х сетЕЙ

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: O auth оризация  и  API  социальн ы х сетЕЙ

Twitter - впечатления

• Баг длиной ID в php (E14)• Plaintext (в последний раз как я заглядывал)

Page 13: O auth оризация  и  API  социальн ы х сетЕЙ

Вопросы?

(Про twitter)

Page 14: O auth оризация  и  API  социальн ы х сетЕЙ

Один из семи инструментов пропагандыАбстрактная мысль №2 этого доклада

Page 15: O auth оризация  и  API  социальн ы х сетЕЙ

Facebook – объекты

User (*), Page (*)Status

PostNote

PhotoVideoLink

Album (Photos, Picture)

Event (Feed, Users, Picture)

Group (Feed, Members, Picture)

ApplicationSubscription

InsightsCheckin

→ CommentsLikes ←

Friends

Page 16: O auth оризация  и  API  социальн ы х сетЕЙ

Facebook – новое приложение

Получаем Consumer key (App ID + secret)http://developers.facebook.com/setup/

Page 17: O auth оризация  и  API  социальн ы х сетЕЙ

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: O auth оризация  и  API  социальн ы х сетЕЙ

Привилегии

Page 19: O auth оризация  и  API  социальн ы х сетЕЙ

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: O auth оризация  и  API  социальн ы х сетЕЙ

Facebook + Javascript

• “GraphAPI”• Javascript c FB глобальным объектом• FB.init()• FB.login() + FB.logout()• FB.getLoginStatus()• FB.api()

Page 21: O auth оризация  и  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

Page 22: O auth оризация  и  API  социальн ы х сетЕЙ

Вопросы?

(Про facebook)

Page 23: O auth оризация  и  API  социальн ы х сетЕЙ

У каждой веры своё отношение к клонам

Абстрактная мысль №3 этого доклада

Page 24: O auth оризация  и  API  социальн ы х сетЕЙ

Вконтакте - объекты

FriendsWallPhotos

Audio, VideoPlacesOffers

QuestionsNotesPages

Page 25: O auth оризация  и  API  социальн ы х сетЕЙ

Вконтакте

• Новый «OpenAPI» (3.0), Iframe плюшки• Javascript с глобальным VK объектом

http://vkontakte.ru/js/api/openapi.js

• Авторизация на MD5 подписях для PHP/ActionScript

Page 26: O auth оризация  и  API  социальн ы х сетЕЙ

Вконтакте - псевдокод// старый по логин-паролю$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: O auth оризация  и  API  социальн ы х сетЕЙ

LinkedIN – объекты

Person(Company, Education, Recommendation, Position)

ConnectionShare

Invitation

Page 28: O auth оризация  и  API  социальн ы х сетЕЙ

LinkedIN

• OAuth 1.0• Можно убить access token• Из объектов API – нет полноценных

«компаний» но есть школы• Есть JS Api как у Facebook + iframe плюшки

Page 29: O auth оризация  и  API  социальн ы х сетЕЙ

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: O auth оризация  и  API  социальн ы х сетЕЙ

Одноклассники - объекты

Users, FriendsPhotosEventsMessages

Page 31: O auth оризация  и  API  социальн ы х сетЕЙ

Одноклассники

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

Page 32: O auth оризация  и  API  социальн ы х сетЕЙ

Fin

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