daniel graham phd oauth deep diveexpo aplication facebook auth server facebook resource server login...

20
OAUTH DEEP DIVE DANIEL GRAHAM PHD

Upload: others

Post on 03-Oct-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

O A U T H D E E P D I V ED A N I E L G R A H A M P H D

Page 2: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

F U N V I D E O E X P L A I N I N G O A U T H

• First minute

https://youtu.be/Oy5F9h5JqEU

Page 3: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

O A U T H 2 . 0

• There are two version of OAUTH 2.0 and OAUTH 1.0

https://tools.ietf.org/html/draft-ietf-oauth-v2-23

O A U T H 1 . 0 WA S M O R E C O M P L I C AT E D A N D I N V O LV E S C E R T I F I C AT E S

Page 4: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

O A U T H 2 . 0

• The GAME application does not get username and password from facebook

https://tools.ietf.org/html/draft-ietf-oauth-v2-23

Page 5: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

E X P O A P L I C AT I O N

FA C E B O O K A U T H S E R V E R

FA C E B O O K R E S O U R C E

S E R V E R

L O G I N W I T H FA C E B O O K

Page 6: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

E X P O A P L I C AT I O N

FA C E B O O K A U T H S E R V E R

FA C E B O O K R E S O U R C E

S E R V E R

L O G I N W I T H FA C E B O O K

A U T H O R I Z AT I O N R E Q U E S T

Page 7: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

E X P O A P L I C AT I O N

FA C E B O O K A U T H S E R V E R

FA C E B O O K R E S O U R C E

S E R V E R

L O G I N W I T H FA C E B O O K

A U T H O R I Z AT I O N R E Q U E S T

R E D I R E C T U R L

Page 8: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

E X P O A P L I C AT I O N

FA C E B O O K A U T H S E R V E R

FA C E B O O K R E S O U R C E

S E R V E R

L O G I N W I T H FA C E B O O K

A U T H O R I Z AT I O N R E Q U E S T

C L I C K S G R A N T S P R E M I S I O N S

Page 9: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

E X P O A P L I C AT I O N

FA C E B O O K A U T H S E R V E R

FA C E B O O K R E S O U R C E

S E R V E R

L O G I N W I T H FA C E B O O K

A U T H O R I Z AT I O N R E Q U E S T

A U T H O R I Z AT I O N S G R A N T T O E X P O A P P L I C AT I O N

A U T H E N T I C AT I O N C O D E

User Provides authentication code to expo By redirecting to a predefined url

Page 10: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

E X P O A P L I C AT I O N

FA C E B O O K A U T H S E R V E R

FA C E B O O K R E S O U R C E

S E R V E R

L O G I N W I T H FA C E B O O K

A U T H O R I Z AT I O N R E Q U E S T

A U T H E N T I C AT I O N C O D E , C L I E N T I D

C L I E N T S E C R E T

Page 11: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

E X P O A P L I C AT I O N

FA C E B O O K A U T H S E R V E R

FA C E B O O K R E S O U R C E

S E R V E R

L O G I N W I T H FA C E B O O K

A U T H O R I Z AT I O N R E Q U E S T

A C C E S S T O K E N W I T H L I M I T E D P E R M I S S I O N S

Page 12: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

E X P O A P L I C AT I O N

FA C E B O O K A U T H S E R V E R

FA C E B O O K R E S O U R C E

S E R V E R

L O G I N W I T H FA C E B O O K

A U T H O R I Z AT I O N R E Q U E S T

A C C E S S T O K E N

R E S O U R C E

R E S O U R C E S E R V E R C H E C K S T O K E N

Page 13: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

N E E D T O R E G I S T E R E X P O A P P W I T H A U T H S E R V E R

Page 14: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

E X P O A P L I C AT I O N

Name Etc

FA C E B O O K A U T H S E R V E R

Page 15: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

E X P O A P L I C AT I O N

Name, Etc FA C E B O O K A U T H S E R V E R

Client ID Client Secret

Page 16: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

const rootStack = createDrawerNavigator({ Login: LoginScreen, Home: HomeScreen, Player: PlayerScreen },{ initalRouteName: 'Login' } )

A D D E D L O G I N S C R E E N

A D D S E T T H E I N I T I A L R O U T E

Page 17: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

import * as React from 'react'; import { View } from 'react-native';

export default class LoginScreen extends React.Component { render() {

return(<View style={styles.loginButton}> <Button title="Login with Facebook" onPress={()=>handleFacebookLogin(navigation)} /> </View>)

} } S E T U P A F U N C T I O N T H AT

W I L L H A N D L E FA C E B O O K N AV I G AT I O N

Page 18: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

async handleFacebookLogin(navigation){ try { const { type, token } = await Facebook.logInWithReadPermissionsAsync( '1201211719949057', // Replace with your own app id in standalone app { permissions: ['public_profile'] } ) switch (type) { case 'success': { // Get the user's name using Facebook's Graph API const response = await fetch(`https://graph.facebook.com/me?access_token=${token}`); const profile = await response.json(); navigation.navigate('MainScreen', {profile}) break; }

Page 19: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

L E T ’ S L O O K AT A S N A C K

• https://snack.expo.io/@professorxii/facebookloginexample

Page 20: DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login with facebook

• https://developers.facebook.com/docs/apps#register

https://docs.expo.io/versions/latest/sdk/facebook/