[소셜 로그인] facebook login email 정보 받기

하태현·2021년 3월 17일
0

react-native-fbsdk 라이브러리 github을 보며 적용하던중 로그인 시 유저게 email정보를 요청하고 해당 정보를 받아오려고 하는데 공식문서에서는 해당 내용을 찾기가 힘들었다.

이 과정이 필요했던 이유는 소셜로그인(facebook)을 했을때, 회원가입하는 계정의 userID로 사용할 정보를 얻어내야했다.

async facebookLogin() {
        const result:any = await LoginManager.logInWithPermissions(["public_profile", "email"])
        if (result.isCancelled) {
            console.log("Login cancelled");
        } else {
            const data = await AccessToken.getCurrentAccessToken()
            if (data) {
                new GraphRequestManager().addRequest(new GraphRequest(
                    '/me',{
                        parameters: {
                        'fields': {
                            'string' : 'email, name'
                        }
                    }
                }, (err, obj:any)=> {
                        if (obj) {
                            console.log(obj)
                            const {AuthAct, auth, navigation} = this.props
                            AuthAct.socialSign('facebook', data.userID, obj.name, obj.email, data.accessToken, auth.fcmToken)
                            .then(res=> navigation.navigate('Home'))
                        }
                    }
                )).start()
            }
        }
    }

permission 정보로 email을 추가 요청한다.

const result:any = await LoginManager.logInWithPermissions(["public_profile", "email"])

GraphRequest의 두번째 인자로 parameter를 작성하여 넘겨 준다.

GraphRequest(
                    '/me',{
                        parameters: {
                        'fields': {
                            'string' : 'email, name'
                        }
                    }
                }, (err, obj:any)=> {
                        if (obj) {
                            console.log(obj)
                            const {AuthAct, auth, navigation} = this.props
                            AuthAct.socialSign('facebook', data.userID, obj.name, obj.email, data.accessToken, auth.fcmToken)
                            .then(res=> navigation.navigate('Home'))
                        }
                    }
                )
profile
왜?를 생각하며 개발하기, 다양한 프로젝트를 경험하는 것 또한 중요하지만 내가 사용하는 기술이 어떤 배경과 이유에서 만들어진 건지, 코드를 작성할 때에도 이게 최선의 방법인지를 끊임없이 질문하고 고민하자. 이 과정은 앞으로 개발자로 커리어를 쌓아 나갈 때 중요한 발판이 될 것이다.

0개의 댓글