Facebook & OAuth
Transcript of Facebook & OAuth
2014. By Deng Wei-Dai. For Social Web Design Workshop.
淺談Facebook & OAuth與Live實作
鄧維岱 Danny Deng 2014.05.14
@ 成⼤大電機系92225
1
Social Web Design Workshop #1
2014. By Deng Wei-Dai. For Social Web Design Workshop.
ABOUT ME
• 鄧維岱 Danny
2
2014. By Deng Wei-Dai. For Social Web Design Workshop.
ABOUT ME
• 鄧維岱 Danny
• NCKU EE104
2
2014. By Deng Wei-Dai. For Social Web Design Workshop.
ABOUT ME
• 鄧維岱 Danny
• NCKU EE104
• MOVEMENT @ SWD 2013
• www.movement-itw.com
2
2014. By Deng Wei-Dai. For Social Web Design Workshop.
ABOUT ME
• 鄧維岱 Danny
• NCKU EE104
• MOVEMENT @ SWD 2013
• www.movement-itw.com
2
2014. By Deng Wei-Dai. For Social Web Design Workshop.
ABOUT ME
• 鄧維岱 Danny
• NCKU EE104
• MOVEMENT @ SWD 2013
• www.movement-itw.com
2
2014. By Deng Wei-Dai. For Social Web Design Workshop.
What is OAuth?
3
Open Standard for Authorization
2014. By Deng Wei-Dai. For Social Web Design Workshop.
授權程式從_____存取資料
4
Website.APP
FB.GitHub.LinkedIn
2014. By Deng Wei-Dai. For Social Web Design Workshop.
授權程式從_____存取資料
4
Website.APP
FB.GitHub.LinkedIn
Name.Birth. Email.Photo
2014. By Deng Wei-Dai. For Social Web Design Workshop.
We do not need to sign up new accounts
Why OAuth?
5
2014. By Deng Wei-Dai. For Social Web Design Workshop.
ROLE
• Resource Owner: 使⽤用者
• Resource Server: 存放使⽤用者資料的伺服器
7
授權程式從_____存取資料
2014. By Deng Wei-Dai. For Social Web Design Workshop.
ROLE
• Resource Owner: 使⽤用者
• Resource Server: 存放使⽤用者資料的伺服器
• Authorization Server: 授權Access Token的伺服器
7
授權程式從_____存取資料
2014. By Deng Wei-Dai. For Social Web Design Workshop.
ROLE
• Resource Owner: 使⽤用者
• Resource Server: 存放使⽤用者資料的伺服器
• Authorization Server: 授權Access Token的伺服器
• Client: Third-Party程式、APP
7
授權程式從_____存取資料
2014. By Deng Wei-Dai. For Social Web Design Workshop.
CLIENT
8
Client ID Client Secret
Redirect URI
2014. By Deng Wei-Dai. For Social Web Design Workshop.
• Scope: 存取資料範圍
9
more reference for scope
2014. By Deng Wei-Dai. For Social Web Design Workshop.
• Scope: 存取資料範圍
9
Public Profile (Default).email…
more reference for scope
2014. By Deng Wei-Dai. For Social Web Design Workshop.
• Scope: 存取資料範圍
9
Public Profile (Default).email…
more reference for scope
2014. By Deng Wei-Dai. For Social Web Design Workshop.
• Scope: 存取資料範圍
• State: (RECOMMEND) Random, prevent CSRF
9
Public Profile (Default).email…
more reference for scope
2014. By Deng Wei-Dai. For Social Web Design Workshop.
• Scope: 存取資料範圍
• State: (RECOMMEND) Random, prevent CSRF
• Code: Get Access Token
9
Public Profile (Default).email…
more reference for scope
2014. By Deng Wei-Dai. For Social Web Design Workshop.
• Scope: 存取資料範圍
• State: (RECOMMEND) Random, prevent CSRF
• Code: Get Access Token
• Access Token: Main KEY
9
Public Profile (Default).email…
more reference for scope
2014. By Deng Wei-Dai. For Social Web Design Workshop.
ROLE
• Resource Owner: 使⽤用者
• Resource Server: 存放使⽤用者資料的伺服器
• Authorization Server: 授權Access Token的伺服器
• Client: Third-Party程式、APP
11
授權程式從_____存取資料
2014. By Deng Wei-Dai. For Social Web Design Workshop. 12
Client ID, Redirect URI,Scope, State…
Agree?
2014. By Deng Wei-Dai. For Social Web Design Workshop. 12
Client ID, Redirect URI,Scope, State…
Agree?
Grant codeError msg
With same state
2014. By Deng Wei-Dai. For Social Web Design Workshop. 13
Send to Redirect URI
Grant codeError msg with same state
2014. By Deng Wei-Dai. For Social Web Design Workshop. 13
Send to Redirect URI
Grant codeError msg with same state
CHECK state
2014. By Deng Wei-Dai. For Social Web Design Workshop. 13
Send to Redirect URI
Grant codeError msg with same state
Client info, Grant code
CHECK state
2014. By Deng Wei-Dai. For Social Web Design Workshop. 13
Send to Redirect URI
Grant codeError msg with same state
Client info, Grant code
CHECK state
CHECK 1.Client info 2.Redirect URI
2014. By Deng Wei-Dai. For Social Web Design Workshop. 13
Send to Redirect URI
Grant codeError msg with same state
Client info, Grant code
CHECK state
Access Token
CHECK 1.Client info 2.Redirect URI
2014. By Deng Wei-Dai. For Social Web Design Workshop. 14
Access Token
Call Graph API (FB)
GET User’s info
2014. By Deng Wei-Dai. For Social Web Design Workshop. 14
Access Token
Call Graph API (FB)
Login Success
GET User’s info
2014. By Deng Wei-Dai. For Social Web Design Workshop.
3 PROTOCOL ENDPOINT(a little bit detail)
15
Authorization Server Client
2014. By Deng Wei-Dai. For Social Web Design Workshop.
3 PROTOCOL ENDPOINT(a little bit detail)
15
Authorization Server Client
Authorization Endpoint
Token Endpoint
2014. By Deng Wei-Dai. For Social Web Design Workshop.
3 PROTOCOL ENDPOINT(a little bit detail)
15
Authorization Server
Redirection Endpoint
Client
Authorization Endpoint
Token Endpoint
2014. By Deng Wei-Dai. For Social Web Design Workshop.
3 PROTOCOL ENDPOINT
16
Authorization Server
Redirection Endpoint
Client
Authorization Endpoint
Token Endpoint
2014. By Deng Wei-Dai. For Social Web Design Workshop. 17
Client ID, Redirect URI,Scope, State…
Agree?
Grant codeError msg
With same state
2014. By Deng Wei-Dai. For Social Web Design Workshop. 17
Client ID, Redirect URI,Scope, State…
Agree?
Grant codeError msg
With same state
2014. By Deng Wei-Dai. For Social Web Design Workshop. 17
Client ID, Redirect URI,Scope, State…
Agree?
Grant codeError msg
With same state
2014. By Deng Wei-Dai. For Social Web Design Workshop.
https://www.facebook.com/dialog/oauth?
client_id=580500188730688
&redirect_uri=http://merry.ee.ncku.edu.tw/redirect
&state=d41d8cd98f00b204e9800998ecf8427e
&response_type=code
&scope=email
18
向Authorization Endpoint提出請求
data which redirect back is code
2014. By Deng Wei-Dai. For Social Web Design Workshop.
DENY OR ERRORhttp://your_redirect_uri?error=error&error_code=error_code &error_description=description&error_reason=error_reason &state=state
19
more reference for error
2014. By Deng Wei-Dai. For Social Web Design Workshop.
DENY OR ERRORhttp://your_redirect_uri?error=error&error_code=error_code &error_description=description&error_reason=error_reason &state=state
19
more reference for error
http://your_redirect_uri?code=code&state=state
AGREE
2014. By Deng Wei-Dai. For Social Web Design Workshop. 20
Client ID, Redirect URI,Scope, State…
Agree?
Grant codeError msg
With same state
2014. By Deng Wei-Dai. For Social Web Design Workshop. 20
Client ID, Redirect URI,Scope, State…
Agree?
Grant codeError msg
With same state
2014. By Deng Wei-Dai. For Social Web Design Workshop.
3 PROTOCOL ENDPOINT
21
Authorization Server
Redirection Endpoint
Client
Authorization Endpoint
Token Endpoint
2014. By Deng Wei-Dai. For Social Web Design Workshop. 22
Send to Redirect URI
Grant codeError msg with same state
Client info, Grant code
CHECK state
Access Token
CHECK 1.Client info 2.Redirect URI
2014. By Deng Wei-Dai. For Social Web Design Workshop. 22
Send to Redirect URI
Grant codeError msg with same state
Client info, Grant code
CHECK state
Access Token
CHECK 1.Client info 2.Redirect URI
2014. By Deng Wei-Dai. For Social Web Design Workshop.
3 PROTOCOL ENDPOINT
23
Authorization Server
Redirection Endpoint
Client
Authorization Endpoint
Token Endpoint
2014. By Deng Wei-Dai. For Social Web Design Workshop. 24
Send to Redirect URI
Grant codeError msg with same state
Client info, Grant code
CHECK state
Access Token
CHECK 1.Client info 2.Redirect URI
2014. By Deng Wei-Dai. For Social Web Design Workshop. 24
Send to Redirect URI
Grant codeError msg with same state
Client info, Grant code
CHECK state
Access Token
CHECK 1.Client info 2.Redirect URI
2014. By Deng Wei-Dai. For Social Web Design Workshop. 24
Send to Redirect URI
Grant codeError msg with same state
Client info, Grant code
CHECK state
Access Token
CHECK 1.Client info 2.Redirect URI
2014. By Deng Wei-Dai. For Social Web Design Workshop.
https://graph.facebook.com/oauth/access_token?
client_id=client_id
&client_secret=client_secret
&redirect_uri=redirect_uri
&code=code
25
向Token Endpoint提出請求
Afterwards, get access_token
2014. By Deng Wei-Dai. For Social Web Design Workshop. 26
Access Token
Call Graph API (FB)
Login Success
GET User’s info
2014. By Deng Wei-Dai. For Social Web Design Workshop. 26
Access Token
Call Graph API (FB)
Login Success
GET User’s info
2014. By Deng Wei-Dai. For Social Web Design Workshop.
https://graph.facebook.com/me?
access_token=access_token
27
Graph API request access_token
We will get info depending on scope
2014. By Deng Wei-Dai. For Social Web Design Workshop. 30
Download Materials
2014. By Deng Wei-Dai. For Social Web Design Workshop.
STRUCTURE
PHP Folder
• index.html
• jquery-2.0.2.min.js
• facebook.php
• facebook.png
34
2014. By Deng Wei-Dai. For Social Web Design Workshop.
CURL DETAIL
• curl_setopt(ch, option, value);
• CURLOPT_URL: 設定擷取網址
• CURLOPT_RETURNTRANSFER: 回傳是否字串
• curl_exec($ch): 執⾏行
• curl_close($ch): 關閉
35
2014. By Deng Wei-Dai. For Social Web Design Workshop.
NodeJS
36
With Express and Passport
If we have time…
2014. By Deng Wei-Dai. For Social Web Design Workshop.
STEP
npm install express-generator (Installed by Prof.)
1. ssh [email protected]
2. express XXX (XXX is a folder)
3. cd XXX & npm install
4. npm install passport
5. npm install passport-facebook
37
2014. By Deng Wei-Dai. For Social Web Design Workshop.
STRUCTURE
NodeJS Folder
• app.js
• routes/index.js
• html/facebook.html
38
2014. By Deng Wei-Dai. For Social Web Design Workshop.
MORE REFERENCE
• Passport Authentication for Node.js Applications
• Easy Node Authentication: Facebook
• Notice: Express3.0. We have installed express 4.0
39
2014. By Deng Wei-Dai. For Social Web Design Workshop. 42
Thanks for your listening!
2014. By Deng Wei-Dai. For Social Web Design Workshop.
MORE REFERENCE
• (Ruby)簡單易懂的 OAuth 2.0 - 如何⽤用 OAuth 2 鎖住你的 API
• OAuth 和 OpenID 到底是什麼呢?
• Spec: The OAuth 2.0 Authorization Framework
43