테스트 사이트 - 개발 중인 베타 버전입니다

facebook 소셜 로그인시 토큰 에러 질문 채택완료

8년 전 조회 6,537

아직 웹 개발 초보자라 부족한 점이 많습니다 ㅠㅠ

***********************************************

페이스북 소셜 로그인 기능 로그인까지는 되는데 그 다음이 안됩니다.

'토큰 정보가 올바르지 않습니다' 라고 뜨는데요

 

plugin/oauth/facebook/callback.php 파일에서 찾아보니 

굵은 빨간 줄만 보시면 됩겁니다.

 

$oauth = new FACEBOOK_OAUTH(G5_FACEBOOK_CLIENT_ID, G5_FACEBOOK_SECRET_KEY); 

 

if($oauth->check_valid_state_token($_GET['state'])) {

    if($oauth->get_access_token($_GET['code'])) {

        if($oauth->check_valid_access_token()) {

            $oauth->get_profile();

 

            //var_dump($oauth->profile); exit;

 

            if($oauth->profile->id) {

                $email = $oauth->profile->email;

                $info  = get_oauth_member_info($oauth->profile->id, $oauth->profile->name, 'facebook');

 

                if($info['id']) {

                    unset($member);

 

                    $member = array(

                                'mb_id'       => $info['id'],

                                'mb_password' => $info['pass'],

                                'mb_email'    => $email,

                                'mb_nick'     => $info['nick'],

                                'mb_name'     => $oauth->profile->name,

                                'mb_level'    => 2,

                                'mb_point'    => 0

                            );

 

                    set_session('ss_oauth_member_no',                               'fcb_'.$oauth->profile->id);

                    set_session('ss_oauth_member_fcb_'.$oauth->profile->id.'_info', $member);

                }

            } else {

                alert_close('서비스 장애 또는 정보가 올바르지 않습니다.');

            }

        } else {

            alert_close('토큰 정보가 올바르지 않습니다.');

        }

    }

 

 

토큰 정보 에러가 뜨면

G5_FACEBOOK_CLIENT_ID, G5_FACEBOOK_SECRET_KEY 의 값이 유효하지 않아서인가요? 

혹인 값이 달라서인가요?

그리고 $_GET['code']는 어디서 얻어오는 건가요?

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트

알반적으로 인증과정이

client_id와 client_secret와 자체 state키를 생성해 인증페이지로 보내면

콜백url로 state와 code값을 주소창에 달고 즉 쿼리스트링 형태로 보냅니다.

그러면 $_GET['state']로 검증을 하고 $_GET['code']로 나머지 인증 작업을 끝내면

최종 access_token값을 얻게 됩니다.

 

제가 볼 때 정확한 사정은 모르겠지만 

먼저 client_id와 client_secret값이 정확한 것인지 확인해 보시고

콜백페이지 주소창에 code값이 제대로 넘어 왔는 지 확인해 보시죠.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

code값이 정확히 넘어왔는지 어디서 비교를 해야하나요?
인증과정에 콜백주소로 넘어 오는데 주소창을 보시면 알 수 있습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인

전체 질문 목록

🐛 버그신고