DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login...

20
OAUTH DEEP DIVE DANIEL GRAHAM PHD

Transcript of DANIEL GRAHAM PHD OAUTH DEEP DIVEexpo aplication facebook auth server facebook resource server login...

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/