고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.
커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.
문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.
- 뒤끝 SDK 버전 : 5.16.1
- 프로젝트명 : VTuber : Idle RPG
- 스테이터스 코드 : 401
- 에러 코드 :
- 에러 메시지 :
using System.Collections;
using System.Collections.Generic;
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using UnityEngine;
// 뒤끝 SDK namespace 추가
using BackEnd;
using System;
public class BackendManager : MonoBehaviour
{
MyObject myChar;
private static BackendManager instance;
private string guestID;
private int retryCount = 0;
private const int maxRetry = 3; // 최대 재시도 횟수
private void Awake()
{
if (instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject); // 씬이 변경되어도 오브젝트 유지
}
else
{
Destroy(gameObject);
}
}
void Start()
{
myChar = MyObject.MyChar;
PlayGamesPlatform.Activate(); //GPGS 활성화
var bro = Backend.Initialize(); // 뒤끝 초기화
// 뒤끝 초기화에 대한 응답값
if (bro.IsSuccess())
{
Debug.Log("초기화 성공 : " + bro); // 성공일 경우 statusCode 204 Success
}
else
{
Debug.LogError("초기화 실패 : " + bro); // 실패일 경우 statusCode 400대 에러 발생
}
// GPGS 로그인
PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
}
void ProcessAuthentication(SignInStatus status)
{
if (status == SignInStatus.Success)
{
Debug.Log("GPGS 로그인 성공!");
GetAccessCode();
// Continue with Play Games Services
}
else
{
// Disable your integration with Play Games Services or show a login button
// to ask users to sign-in. Clicking it should call
// PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
//Debug.LogError("GPGS 로그인 실패. 상태: " + status);
TryGuestLogin(); // GPGS 실패 시 게스트 로그인 진행
}
}
public void GetAccessCode()
{
PlayGamesPlatform.Instance.RequestServerSideAccess(
/* forceRefreshToken= */ false,
code => {
Debug.Log("구글 인증 코드 : " + code);
Backend.BMember.GetGPGS2AccessToken(code, googleCallback =>
{
Debug.Log("GetGPGS2AccessToken 함수 호출 결과 " + googleCallback);
string accessToken = "";
if (googleCallback.IsSuccess())
{
accessToken = googleCallback.GetReturnValuetoJSON()["access_token"].ToString();
}
Backend.BMember.AuthorizeFederation(accessToken, FederationType.GPGS2, callback =>
{
Debug.Log(accessToken);
Debug.Log("뒤끝 로그인 성공했습니다. " + callback);
});
});
});
}
private void TryGuestLogin()
{
guestID = SystemInfo.deviceUniqueIdentifier; // 기기 고유 ID를 게스트 ID로 사용
Debug.Log("기기 ID : "+guestID);
Debug.Log("기존 게스트 계정 확인 중...");
// 기존 계정이 있는지 확인 (로그인 시도)
Backend.BMember.CustomLogin(guestID, "guest_password", loginCallback =>
{
if (loginCallback.IsSuccess())
{
Debug.Log("기존 게스트 계정 로그인 성공!");
string userID = Backend.UID;
string userUUID = Backend.BMember.GetUserInfo().GetReturnValuetoJSON()["row"]["gamerId"].ToString();
Debug.Log(userID + ": 2\n" + userUUID);
}
else
{
Debug.LogWarning("기존 게스트 계정 없음. 새로운 계정 생성 진행");
// 기존 계정이 없다면 회원가입 진행
RegisterGuestAccount();
}
});
}
private void RegisterGuestAccount()
{
Backend.BMember.CustomSignUp(guestID, "guest_password", signupCallback =>
{
if (signupCallback.IsSuccess())
{
Debug.Log("새로운 게스트 계정 생성 및 로그인 성공!");
string userID = Backend.UID;
string userUUID = Backend.BMember.GetUserInfo().GetReturnValuetoJSON()["row"]["gamerId"].ToString();
Debug.Log(userID + ": 3\n" + userUUID);
}
else
{
Debug.LogError("게스트 계정 생성 실패: " + signupCallback);
}
});
}
}
액을 실행해서 확인해보면 구글인증 코드 와 GetGPGS2AccessToken 함수 호출 결과에서 StatusCode : 200을 받고 성공한걸로나오는데 그뒤에
Debug.Log(accessToken); 값을 확인해보면 ya29.a0Ae…의 값을 제대로 받으면서
뒤끝 로그인 성공했다는 안내와함께 StatusCode : 401값을 출력하면서 GPGS 회원가입이 안되고있습니다.
401값은Client Secret에러라고나와잇는데 구글클라우드의 클라이언트 보안 비밀번호값이랑 동일한 값이 입력된 상태인데 왜 가입이 진행이 안되는걸까요?