구글 로그인 인증에 관하여.

문의를 남기실 경우 다음 항목을 작성해 주시면 빠른 답변 처리에 도움이 됩니다.

  • 프로젝트명 : Multiplayer test
  • 뒤끝SDK 버전 : 5.4.5
  • 에러 코드 :

게스트 로그인을 하면 " 콘솔 > 대시보드 > 게임유저관리"에서 목록에 나타나는데
구글로그인을 하면 목록에는 안보이던데 정상인가요?
만약 정상이라면, 목록에 보이기 위해서는 게스트 로그인 후 구글 로그인으로 변경해야 하나요?

안녕하세요 개발자님,
말씀해주신 상황은 구글 로그인이 실패하여 회원가입이 이루어지지 않은 상황으로 예상됩니다.
구글 로그인을 진행하였을 때 리턴이 IsSuccess()로 성공한 것이 맞는지 확인해 주세요.

좋아요 1

네 모바일 기기에서도 정상적으로 구글 로그인 됐다고 나옵니다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using BackEnd;
using GooglePlayGames;
using GooglePlayGames.BasicApi;

public class GoogleLoginSystem : LoginSystem
{
// Start is called before the first frame update
void Start()
{
PlayGamesClientConfiguration config = new PlayGamesClientConfiguration
.Builder()
.RequestServerAuthCode(false)
.RequestEmail() // 이메일 권한을 얻고 싶지 않다면 해당 줄(RequestEmail)을 지워주세요.
.RequestIdToken()
.Build();
//커스텀 된 정보로 GPGS 초기화
PlayGamesPlatform.InitializeInstance(config);
PlayGamesPlatform.DebugLogEnabled = true; // 디버그 로그를 보고 싶지 않다면 false로 바꿔주세요.
//GPGS 시작.
PlayGamesPlatform.Activate();
}

// Update is called once per frame
void Update()
{

}

public override void SignIn()
{
    Debug.Log("Loging in...");

    // 이미 로그인 된 경우
    if (Social.localUser.authenticated == true)
    {
        BackendReturnObject BRO = Backend.BMember.AuthorizeFederation(GetTokens(), FederationType.Google, "gpgs");
    }
    else
    {
        Social.localUser.Authenticate((bool success) =>
        {
            if (success)
            {
                // 로그인 성공 -> 뒤끝 서버에 획득한 구글 토큰으로 가입 요청
                BackendReturnObject BRO = Backend.BMember.AuthorizeFederation(GetTokens(), FederationType.Google, "gpgs");                                        
                
                GameManager.Instance.SetupCurrentLoginType(GameManager.LoginType.Google);
                base.SignIn();

                Debug.Log("Login Succeeded");
            }
            else
            {
                // 로그인 실패
                Debug.Log("Login failed for some reason");
            }
        });
    }
}

public override void SignOut()
{
    GooglePlayGames.PlayGamesPlatform.Instance.SignOut();
    base.SignOut();        
}

// 구글 토큰 받아옴
public string GetTokens()
{
    if (PlayGamesPlatform.Instance.localUser.authenticated)
    {
        // 유저 토큰 받기 첫 번째 방법
        string _IDtoken = PlayGamesPlatform.Instance.GetIdToken();
        // 두 번째 방법
        // string _IDtoken = ((PlayGamesLocalUser)Social.localUser).GetIdToken();
        return _IDtoken;
    }
    else
    {
        Debug.Log("접속되어 있지 않습니다. PlayGamesPlatform.Instance.localUser.authenticated :  fail");
        return null;
    }
}

}

이게 제가 튜토리얼 따라서 작성한 코드이구요.
튜토리얼 안내에 따라 구글 플레이 콘솔과 클라우드 플랫폼에 OAuth 인증 모두 셋팅 됐고
모바일 기기로도 구글 로그인까지 성공했습니다.
그럼에도 불구하고 "콘솔 > 대시보드 > 게임유저관리"에서 유저 목록을 찾아볼 수가 없네요.

개발부서 확인시 bad bad google accessToken, 잘못된 bad google accessToken 입니다. 에러가 리턴되고 있는 것으로 확인됩니다.

아래의 커뮤니티 질문을 한차례 확인 부탁드리며,
추가로 남겨드리는 내용 확인하여 주시면 감사하겠습니다.

  1. 테스트를 진행중인 기기가 모바일 환경이 맞는지 여부
  2. GetTokens()의 리턴값이 null인지 확인
  3. BackendReturnObject BRO = Backend.BMember.AuthorizeFederation(GetTokens(), FederationType.Google, “gpgs”); 에서 Debug.Log(BRO)를 통해 리턴값 확인
좋아요 1

네 로그를 확인해보니 토큰은 null이 아닌 값이 나오고
Debug.Log(BRO)의 값은
status Code: 401
error Code: BadUnauthorized Exception
message: bad packageName. 잘못된 Package Name입니다.
라고 나오네요. 혹시 Com.DefualtCompany라는 기본값을 그대로 패키지 네임으로 써서 그럴까요?

배드 패키지 네임은 유니티에서 설정한 패키지네임과 뒤끝 콘솔에 저장된 패키지네임이 일치해야 합니다.
고유한 값에 해당하기에 설정 값을 고유한 정보로 설정해 이용하시는 것을 추천드립니다.

좋아요 1


패키지 네임은 여기에 기입하면 될까요?

표시하신 인증정보 메뉴의 패키지 네임 부분에 입력해 주시면 됩니다.
단, 패키지 네임이 바뀔 경우, 구글 콘솔에 등록한 GPGS도 연동이 중지될 가능성이 높으며, 구글 콘솔에서 새롭게 프로젝트를 등록하셔야 합니다.

새롭게 구글에서 프로젝트를 만들 시 키 스토어 또한 새로 등록하는 것을 추천드리며,
keystore와 구글 콘솔의 프로젝트가 변경될 경우 googleHash도 변경이 되니 이 부분도 확인해 주시면 감사하겠습니다.

좋아요 1

답변감사합니다 한번 시도해보겠습니다^^

패키지 네임 제대로 넣고 확인해본 결과
Debug.Log(BRO)의 값은
status Code: 401
error Code: Bad Unauthorized Exception
message: bad google_hash, 잘못된 google_hash 입니다.
라고 뜨네요. google hash는 어떻게 얻어오면 될까요?

검색 후 해결했습니다. 친절한 답변 감사드립니다^^

어떻게 해결하셨나요? 저도 이거뜨는데

구글 해시키는
게임 내에서 함수를 호출하여 확인하거나, 유니티 인스펙터 창에서 확인할 수 있습니다.
아래 개발자 문서를 확인해 주세요. :D