[G5][Google] 사용자 프로필 요청이 실패했습니다. > 기술자료 | 해피정닷컴

[G5][Google] 사용자 프로필 요청이 실패했습니다. > 기술자료

본문 바로가기

사이트 내 전체검색

[G5][Google] 사용자 프로필 요청이 실패했습니다. > 기술자료

SNS [G5][Google] 사용자 프로필 요청이 실패했습니다.

페이지 정보


본문

그누보드 5.4.3 기준

구글 소셜로그인 시도하면 아래와 같이 에러화면이 뜹니다


Error :
사용자 프로필 요청이 실패했습니다.사용자가 해당 서비스에 연결되어 있지 않을 경우도 있습니다. 이 경우 다시 인증 요청을 해야 합니다.





1-1. 그누보드5 / plugin / social / Hybrid / Providers / Google.php  22줄
    public $scope = "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/plus.profile.emails.read https://www.google.com/m8/feeds/";

를 아래와 같이 변경

    //public $scope = "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/plus.profile.emails.read https://www.google.com/m8/feeds/";
    public $scope = "https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.google.com/m8/feeds/";


1-2. 그누보드5 / plugin / social / Hybrid / Providers / Google.php  75줄

        $this->refreshToken();

        // ask google api for user infos
        if (strpos($this->scope, '/auth/plus.profile.emails.read') !== false) {
            $verified = $this->api->api("https://www.googleapis.com/plus/v1/people/me");

            if (!isset($verified->id) || isset($verified->error))
                $verified = new stdClass();
        } else {
            $verified = $this->api->api("https://www.googleapis.com/plus/v1/people/me/openIdConnect");

            if (!isset($verified->sub) || isset($verified->error))
                $verified = new stdClass();
        }

        $response = $this->api->api("https://www.googleapis.com/plus/v1/people/me");
        if (!isset($response->id) || isset($response->error)) {
            throw new Exception("User profile request failed! {$this->providerId} returned an invalid response:" . Hybrid_Logger::dumpData( $response ), 6);
        }

        $this->user->profile->identifier = (property_exists($verified, 'id')) ? $verified->id : ((property_exists($response, 'id')) ? $response->id : "");
        $this->user->profile->firstName = (property_exists($response, 'name')) ? $response->name->givenName : "";
        $this->user->profile->lastName = (property_exists($response, 'name')) ? $response->name->familyName : "";
        $this->user->profile->displayName = (property_exists($response, 'displayName')) ? $response->displayName : "";
        $this->user->profile->photoURL = (property_exists($response, 'image')) ? ((property_exists($response->image, 'url')) ? substr($response->image->url, 0, -2) . "200" : '') : '';
        $this->user->profile->profileURL = (property_exists($response, 'url')) ? $response->url : "";
        $this->user->profile->description = (property_exists($response, 'aboutMe')) ? $response->aboutMe : "";
        $this->user->profile->gender = (property_exists($response, 'gender')) ? $response->gender : "";
        $this->user->profile->language = (property_exists($response, 'locale')) ? $response->locale : ((property_exists($verified, 'locale')) ? $verified->locale : "");
        $this->user->profile->email = (property_exists($response, 'email')) ? $response->email : ((property_exists($verified, 'email')) ? $verified->email : "");
        $this->user->profile->emailVerified = (property_exists($verified, 'email')) ? $verified->email : "";

를 아래와 같이 변경

        $this->refreshToken();

        $response = $this->api->api("https://www.googleapis.com/oauth2/v3/userinfo");
        if (!isset($response->sub) || isset($response->error)) {
            throw new Exception("User profile request failed! {$this->providerId} returned an invalid response:" . Hybrid_Logger::dumpData( $response ), 6);
        }

        // ask google api for user infos
        /*
        if (strpos($this->scope, '/auth/plus.profile.emails.read') !== false) {
            $verified = $this->api->api("https://www.googleapis.com/plus/v1/people/me");

            if (!isset($verified->id) || isset($verified->error))
                $verified = new stdClass();
        } else {
            $verified = $this->api->api("https://www.googleapis.com/plus/v1/people/me/openIdConnect");

            if (!isset($verified->sub) || isset($verified->error))
                $verified = new stdClass();
        }

        $response = $this->api->api("https://www.googleapis.com/plus/v1/people/me");
        if (!isset($response->id) || isset($response->error)) {
            throw new Exception("User profile request failed! {$this->providerId} returned an invalid response:" . Hybrid_Logger::dumpData( $response ), 6);
        }
        */

        $this->user->profile->identifier = (property_exists($response, 'sub')) ? $response->sub : "";
        $this->user->profile->firstName = (property_exists($response, 'name')) ? $response->name->givenName : "";
        $this->user->profile->lastName = (property_exists($response, 'name')) ? $response->name->familyName : "";
        $this->user->profile->displayName = (property_exists($response, 'name')) ? $response->name : "";
        $this->user->profile->photoURL = (property_exists($response, 'picture')) ? $response->picture : "";
        $this->user->profile->profileURL = (property_exists($response, 'profile')) ? $response->profile : "";
        $this->user->profile->description = (property_exists($response, 'aboutMe')) ? $response->aboutMe : "";
        $this->user->profile->gender = (property_exists($response, 'gender')) ? $response->gender : "";
        $this->user->profile->language = (property_exists($response, 'locale')) ? $response->locale : "";
        $this->user->profile->email = (property_exists($response, 'email')) ? $response->email : "";
        $this->user->profile->emailVerified = (property_exists($response, 'email_verified')) ? ($response->email_verified === true || $response->email_verified === 1 ? $response->email : "") : "";


2. 그누보드5 / plugin / social / includes / functions.php 내용중

                                    "https://www.googleapis.com/auth/userinfo.email", // optional
를 아래와 같이 변경합니다
                                    //"https://www.googleapis.com/auth/plus.profile.emails.read", // optional
                                    "https://www.googleapis.com/auth/userinfo.email", // optional





참고자료
https://sir.kr/g5_tip/14298
https://sir.kr/g5_plugin/6303

댓글목록

profile_image

ㅇㅇ님의 댓글

ㅇㅇ 이름으로 검색 작성일

이거 기본으로 패치된 걸까요?

profile_image

관리자1님의 댓글의 댓글

관리자1 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

이후 그누보드 업그레이드에 적용 되었습니다.


Total 2,641건 11 페이지
  • RSS
기술자료 목록
2441
Apple   5938  2020-12-10 14:22 ~ 2020-12-17 00:27  
2440
Android   9603  2020-12-10 12:22 ~ 2020-12-17 00:27  
2439
그누보드   6414  2020-12-07 15:15 ~ 2022-12-17 21:15  
2438
SNS   6713  2020-11-30 14:39 ~ 2020-12-12 09:04  
2437
SNS   6072  2020-11-29 16:55 ~ 2020-12-18 19:53  
2436
SNS   10361  2020-11-25 14:04 ~ 2020-12-12 09:05  
2435
Apple   5585  2020-11-24 19:27 ~ 2020-11-24 19:34  
2434
SNS   6111  2020-11-23 03:38 ~ 2020-12-17 09:25  
2433
SNS   6436  2020-11-20 17:16 ~ 2020-11-23 03:07  
2432
SNS   8843  2020-11-19 12:20 ~ 2023-09-12 19:14  
2431
SNS   14777  2020-11-19 12:16 ~ 2020-12-18 19:00  
2430
SNS   6196  2020-11-18 20:15 ~ 2020-12-18 19:01  
2429
PHP   7234  2020-11-08 13:01 ~ 2020-11-08 13:03  
2428
PHP   8284  2020-11-06 20:08  
열람
SNS   8007  2020-11-05 14:21 ~ 2020-12-12 09:07  
2426
SNS   4802  2020-11-05 11:50 ~ 2020-11-23 03:24  
2425
SNS   6634  2020-11-03 19:16 ~ 2020-11-23 03:17  
2424
그누보드   4599  2020-10-19 06:39 ~ 2022-02-01 09:57  
2423
그누보드   4384  2020-10-16 17:08 ~ 2020-10-20 00:43  
2422
그누보드   4949  2020-10-14 12:34 ~ 2021-03-23 18:09  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.