07
19

ID Token 요청에 client_secret이 필요하기 때문에 (보안이슈)

서버를 한 번 경유하기 위한 RequestTokenFromServer 로 대체되어 사용하지 않게 된 스크립트

private async Task ExchangeCoroutine(string code) 
{
    try
    {
        await Awaitable.MainThreadAsync();
        Debug.Log("토큰 요청 시작");
        WWWForm form = new WWWForm();
        form.AddField("code", code);
        form.AddField("client_id", clientId);
        form.AddField("redirect_uri", redirectUri);
        form.AddField("grant_type", "authorization_code");
        UnityWebRequest req = UnityWebRequest.Post("https://oauth2.googleapis.com/token", form);
        Debug.Log("UnityWebRequest 생성 완료");
        await req.SendWebRequest();
        if (req.result != UnityWebRequest.Result.Success)
        {
            Debug.LogError($"Token 요청 실패: {req.error}");
            Debug.Log(req.downloadHandler.text);
            return;
        }
        string result = req.downloadHandler.text;
        JObject obj = JObject.Parse(result);
        string idToken = obj["id_token"]?.ToString();
        Debug.Log($"ID Token 얻음: {idToken}");
        await FirebaseLogin(idToken);
    }
    catch (Exception ex)
    {
        Debug.LogError($"토큰 교환 도중 예외 발생: {ex}");
    }
}
반응형
COMMENT