Oauthоризация в социальных сетях - Amazon S3

longtermagonizingInternet and Web Development

Dec 13, 2013 (3 years and 3 months ago)

50 views

O
AUTH
ОРИЗАЦИЯ
И
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

(*)

Status

Post

Note


Photo

Video

Link

Al
bum
(Photos, Picture)

Event
(
Feed, Users, Picture
)

Group

(
Feed, Members, Picture
)

Application

Subscription

Insights

Checkin


Comments

Likes



Friends

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
пользователя без

разрешения

даже если пользователь разрешил видеть всем


#6
04

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
?