[이미지는 정보 보호를 위해 삭제하였습니다.]
구글아이디로만 로그인 되게 했는데
출시했더니 이렇게 됐어요
유저 아이디 없이 로그인이 됐는데
가입유형은 google 이라되어있어요
왜 그런거죠
저거 이메일 보이게는 못하는건가요
[이미지는 정보 보호를 위해 삭제하였습니다.]
구글아이디로만 로그인 되게 했는데
출시했더니 이렇게 됐어요
유저 아이디 없이 로그인이 됐는데
가입유형은 google 이라되어있어요
왜 그런거죠
저거 이메일 보이게는 못하는건가요
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 뒤끝 SDK namespace 추가
using BackEnd;
public class BackendLogin
{
private static BackendLogin _instance = null;
public static BackendLogin Instance
{
get
{
if (_instance == null)
{
_instance = new BackendLogin();
}
return _instance;
}
}
public void CustomSignUp(string id, string pw)
{
Debug.Log("회원가입을 요청합니다.");
var bro = Backend.BMember.CustomSignUp(id, pw);
if (bro.IsSuccess())
{
Debug.Log("회원가입에 성공했습니다. : " + bro);
}
else
{
Debug.LogError("회원가입에 실패했습니다. : " + bro);
}
}
public void CustomLogin(string id, string pw)
{
Debug.Log("로그인을 요청합니다.");
var bro = Backend.BMember.CustomLogin(id, pw);
if (bro.IsSuccess())
{
Debug.Log("로그인이 성공했습니다. : " + bro);
}
else
{
Debug.LogError("로그인이 실패했습니다. : " + bro);
Debug.LogError(bro.GetStatusCode() == "403");
/* if(bro.GetStatusCode() == "403")
{
BackendManager.Instance. hackBanPanel.SetActive(true);
}*/
}
}
public void UpdateNickname(string nickname)
{
Debug.Log("닉네임 변경을 요청합니다.");
var bro = Backend.BMember.UpdateNickname(nickname);
if (bro.IsSuccess())
{
Debug.Log("닉네임 변경에 성공했습니다 : " + bro);
NotificationPanel.Instance.Notify();
NotificationPanel.Instance.text.text = "닉네임 변경에 성공했습니다";
NameChecker.Instance.nicknamePanel.SetActive(false);
var bro2 = Backend.BMember.GetUserInfo();
var userInfo = bro2.GetReturnValuetoJSON()["row"];
PlayerController.Instance.playerStatSystem.nickname = userInfo["nickname"].ToString();
Debug.Log(userInfo);
Debug.Log(userInfo["nickname"].ToString());
}
else
{
// 뒤끝 서버에서 반환한 메시지가 닉네임이 중복됐다는 것을 나타내는지 확인
if (bro.GetStatusCode() == "410")
{
Debug.LogError("닉네임이 중복됩니다 : " + bro);
NotificationPanel.Instance.Notify();
NotificationPanel.Instance.text.text = "닉네임이 중복됩니다";
}
else if (bro.GetStatusCode() == "409")
{
Debug.LogError("닉네임이 중복됩니다 : " + bro);
NotificationPanel.Instance.Notify();
NotificationPanel.Instance.text.text = "닉네임이 중복됩니다";
}
else
{
Debug.LogError("닉네임 변경에 실패했습니다 : " + bro);
NotificationPanel.Instance.Notify();
NotificationPanel.Instance.text.text = "닉네임 변경에 실패했습니다";
}
}
}
// 사용자 정보를 조회하고 닉네임이 설정되었는지 확인하는 함수
public void CheckUserNicknameSet()
{
Debug.Log("닉네임 CheckUserNicknameSet");
var bb = Backend.BMember.GetUserInfo();
// 현재 로그인한 사용자의 정보를 조회
if (bb.IsSuccess())
{
Debug.Log("닉네임 IsSuccess");
// 사용자 정보 조회에 성공했을 경우
var userInfo = bb.GetReturnValuetoJSON()["row"];
// 닉네임 필드가 존재하는지 확인
if (userInfo["nickname"] != null && !string.IsNullOrEmpty(userInfo["nickname"].ToString()))
{
// 닉네임이 설정되어 있음
Debug.Log("사용자 닉네임: " + userInfo["nickname"]);
// UI 컴포넌트 null 체크 후 안전하게 접근
if (NameChecker.Instance != null && NameChecker.Instance.nicknamePanel != null)
{
NameChecker.Instance.nicknamePanel.SetActive(false);
}
// PlayerController null 체크 후 안전하게 접근
if (PlayerController.Instance != null && PlayerController.Instance.playerStatSystem != null)
{
PlayerController.Instance.playerStatSystem.nickname = userInfo["nickname"].ToString();
}
}
else
{
// 닉네임이 설정되어 있지 않음
Debug.Log("닉네임이 설정되어 있지 않습니다.");
// UI 컴포넌트 null 체크 후 안전하게 접근
if (NameChecker.Instance != null && NameChecker.Instance.nicknamePanel != null)
{
NameChecker.Instance.nicknamePanel.SetActive(true);
}
else
{
Debug.Log("NameChecker.Instance != null" + NameChecker.Instance != null);
Debug.Log("NameChecker.Instance.nicknamePanel != null" + NameChecker.Instance.nicknamePanel != null);
}
}
}
else
{
// 사용자 정보 조회 실패
Debug.LogError("사용자 정보 조회에 실패했습니다. 에러: " + bb.GetErrorCode());
}
}
public void StartGoogleLogin()
{
#if UNITY_ANDROID
TheBackend.ToolKit.GoogleLogin.Android.GoogleLogin(GoogleLoginCallback);
#elif UNITY_IOS
TheBackend.ToolKit.GoogleLogin.iOS.GoogleLogin(GoogleLoginCallback);
#endif
}
private void GoogleLoginCallback(bool isSuccess, string errorMessage, string token)
{
if (isSuccess == false)
{
Debug.LogError(errorMessage);
NotificationPanel.Instance.Notify("구글로그인 실패");
return;
}
Debug.Log("구글 토큰 : " + token);
var bro = Backend.BMember.AuthorizeFederation(token, FederationType.Google);
// NotificationPanel.Instance.Notify("페데레이션 로그인 결과 : " + bro);
Debug.Log("페데레이션 로그인 결과 : " + bro);
if (bro.IsSuccess())
{
Debug.Log("구글 로그인에 성공했습니다");
var bro2 = Backend.BMember.RefreshTheBackendToken();
if (!DataManager.Instance.data.isGuestLogin)
{
BackendManager.Instance.DelayedGetInfo(bro2);
NotificationPanel.Instance.Notify("구글로그인에 성공했습니다");
}
else
{
BackendManager.Instance.FromGuestLoginToGoogleLogin2Invoke(1f);
}
}
else
{
NotificationPanel.Instance.Notify("구글로그인 실패");
Debug.Log("구글로그인 실패" + bro.ErrorCode);
Debug.Log("구글로그인 실패" + bro.ErrorMessage);
Debug.Log("구글로그인 실패" + bro.IsBadAccessTokenError());
}
}
}
이런 코드를 쓰고 있습니다.
저렇게 되는거 왜 저런건지 모르겠어요.
어떻게 하면 다 이메일 수집하게 하나요
안녕하세요 개발자님,
이메일 정보는 유저의 정보 비공개 처리에 따라 수집이 이루어지지 않을 수 있으며,
권한 요구를 통해 이메일 정보를 확인할 수 있습니다.
아래 개발자 문서를 확인하여 적용해 주시기 바랍니다.
추가 정정안내 드립니다.
현재 사용하고 계신 로그인은 구글 로그인으로 확인됩니다.
위 가입과정의 이메일 수집은 GPGS V1 로그인에 적용되며,
구글로그인 SDK 를 사용하는 경우 자동으로 수집됩니다.
수집이 이루어지지 않은 유저는 정보공개가 이루어지지 않아 수집되지 않는 것이니 참고하여 이용해 주시면 감사하겠습니다.
그럼 어떻게 수집하면 되나요??
구글 로그인 sdk 말고 다른 걸로 구현해야 하는건가요?
나중에 결국 이메일로 계정복구 같은데 사용하려면 수집해야 하지 않나요??
위 가입 과정의 이메일 수집은 이제 사용안하는 GPGS 1이며
이메일 정보 미수집 유저의 이메일 정보 등록의 경우는 구글 공식이 아닌 유저가 직접 입력하는 것이 들어가는 거면 번외로 치겠습니다.
자동 수집되지 않는 이메일 주소는 유저의 직접적인 입력을 통해 별도로 저장 관리해주셔야 합니다.
커스텀 계정이 아닌 이상 계정 복구에 이메일이 사용되지 않으며,
커스텀 계정은 이메일 정보를 등록할 수 있는 기능이 별도로 제공중에 있으니 참고하여주시면 감사하겠습니다.
(해당 기능으로 저장된 이메일 정보는 공개 및 노출되지 않습니다.)
그럼 구글 로그인 시 유저아이디에 구글 이메일이 공란으로 나와도 상관이 없다는 말씀이시군요.
즉, 커스텀 계정이 아닌 게스트/구글 계정일 경우에는 굳이 등록을 유도할 필요가 없는거죠 ??
네 맞습니다,
구글 계정 정보로 연동이 이루어진 계정이며, 구글 이메일 주소 정보가 별도로 필요한것이 아니라면 등록을 유도하거나 수집할 필요가 없습니다.