고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.
커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.
문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.
- 뒤끝 SDK 버전 : 5.11.0
- 프로젝트명 : Defence servival
- 스테이터스 코드 :
- 에러 코드 : 401 /BadUnauthorizedException /bad bad accessToken, 잘못된 bad accessToken 입니다
BackendAppleLogin:AppleLogin(Action`1)
LoadingManager:Update() - 에러 메시지 :
현재 프로젝트에서 패러데이션을 통한 애플 로그인을 실행할 경우 아래와 같은 오류 메시지가 출력됩니다.
401 /BadUnauthorizedException /bad bad accessToken, 잘못된 bad accessToken 입니다
BackendAppleLogin:AppleLogin(Action`1)
해당 오류 해결을 위해 Backend.BMember.RefreshTheBackendToken(); 을 사용해서 토큰을 갱신하는 경우 로컬에 저장된 로그인 데이터가 사라지는 경우가 발생합니다.
어떻게 해결해야되는지 알 수있을까요?
아래는 작성한 코드 입니다.
// 로그인/ 자동로그인시 로그인 타입에 따라 함수 실행
public static void ExternalLogin(int logintype, Action ac_Success = null, Action ac_Fail = null)
{
Debug.Log("External Login");
Login_Kind = logintype;
ac_LoginSuccess += ac_Success;
ac_LoginFail += ac_Fail;
switch (Cur_LoginSDK)
{
case E_LoginSDK.BackEnd:
switch (logintype.Get_FederationType())
{
case FederationType.Google:
AuthorizeFederation.Instance.GPGSLogin(ac_BackendLoginSuccess);
break;
case FederationType.Facebook:
break;
case FederationType.Apple:
BackendAppleLogin.Instance.AppleLogin(ac_BackendLoginSuccess);
break;
}
break;
}
}
// 애플 로그인
public void AppleLogin(Action<BackendReturnObject> ac_backendsuccess)
{
// 애플 토큰이 없을 경우
if (string.IsNullOrEmpty(UserManager.UserData.D_Local_user.Apple_Token))
{
var loginArgs = new AppleAuthLoginArgs(AppleAuth.Enums.LoginOptions.IncludeEmail | AppleAuth.Enums.LoginOptions.IncludeFullName);
appleAuthManager.LoginWithAppleId(
loginArgs,
credential =>
{
var appleIdCredential = credential as IAppleIDCredential;
if (appleIdCredential != null)
{
var userId = appleIdCredential.User;
var email = appleIdCredential.Email;
var fullName = appleIdCredential.FullName;
var identityToken = Encoding.UTF8.GetString(appleIdCredential.IdentityToken);
var authorizationCode = Encoding.UTF8.GetString(appleIdCredential.AuthorizationCode);
Debug.Log("Apple Signin Success");
// 생성한 토큰 로컬{UserManager.UserData.D_Local_user.Apple_Token}에 저장
SaveData.Json_Save(SaveData.DataKind.AppleToken, identityToken);
var bro = Backend.BMember.AuthorizeFederation(identityToken, FederationType.Apple, "siwa");
ac_backendsuccess?.Invoke(bro);
}
},
error =>
{
// Debug.Log("Apple Signin Error");
});
}
else
{
// 토큰이 있을 경우 해당 토큰을 사용해서 로그인 실행
var bro = Backend.BMember.AuthorizeFederation(UserManager.UserData.D_Local_user.Apple_Token, FederationType.Apple, "siwa");
if (!bro.IsSuccess())
{
Debug.Log($"login erroer");
if (bro.IsBadAccessTokenError())
{
Debug.Log("access token is finsh ");
var bro2 = Backend.BMember.RefreshTheBackendToken();
if (bro2.GetMessage() == "bad refreshToken")
{
Debug.Log("loaind orther tarken");
}
ac_backendsuccess?.Invoke(bro2);
}
}
else
{
Debug.Log("token login success");
ac_backendsuccess?.Invoke(bro);
}
}