개발 환경은 xcode 14.3.1 unity 2021.3.f1 ios mintarget을 15로 잡고 입니다.
디벨로퍼스 앱 ID는 870179 입니다.
Resp api로 개발 하기 위해서 카카오 디벨로퍼에 내 애플리케이션 앱 설정 → 플랫폼에서 Web 쪽에 http://127.0.0.1:8080으로 등록을 하였고 제품 설정 → 카카오 로그인에서 Redirect Url를 http://127.0.0.1:8080/kakao-login 으로 등록했습니다.
그 다음 인가 코드를 얻기 위해서
Application.OpenURL(kakaoAuthURL + KakaoAppKey + “&redirect_uri=” + redirectURI + “&response_type=code”);
을 통해 인가 코드를 가져오라고 했습니다. KakaoAppKey 는 Rest Api로 사용했습니다. private string redirectURI = “http://127.0.0.1:8080/kakao-login”; 로 설정을 했고요 빌드해서 테스트를 하면 카카오 로그인 까지 넘어가고 네트워크 서버에 연결 할 수 없기 때문에 Safari가 해당 페이지를 열 수 없다고 하는데 혹시 수정해야할 사항이 있는건가요?
알려주시면 감사합니다.
로그인 할 때 사용되는 나머지 코드입니다.
private string kakaoAuthURL = “카카오계정”;
private void OnApplicationFocus(bool hasFocus)
{
Debug.Log("hasFocus : " + hasFocus);
if (hasFocus)
{
// 앱이 다시 포커스를 얻었을 때, 인가 코드 확인
string urlScheme = “kakao”; // 여기에 사용한 URL Scheme을 입력하세요.
// iOS에서 URL Scheme으로 호출되었을 때의 처리
if (Application.platform == RuntimePlatform.IPhonePlayer)
{
if (urlScheme != null && urlScheme.Length > 0)
{
string[] args = System.Environment.GetCommandLineArgs();
foreach (string arg in args)
{
if (arg.StartsWith(urlScheme + "://"))
{
// URL Scheme으로 호출되었을 때의 로직
string authCode = arg.Substring((urlScheme + "://").Length);
logText.text = "인가 코드: " + authCode;
// 인가 코드를 사용하여 액세스 토큰 요청
RequestAccessToken(authCode);
}
}
}
}
}
}
private void RequestAccessToken(string code)
{
// 액세스 토큰 요청을 위한 URL 및 파라미터 설정
string tokenURL = "https://kauth.kakao.com/oauth/token";
WWWForm form = new WWWForm();
form.AddField("grant_type", "authorization_code");
form.AddField("client_id", KakaoAppKey);
form.AddField("redirect_uri", redirectURI);
form.AddField("code", code);
// POST 요청을 통해 액세스 토큰 얻기
StartCoroutine(SendTokenRequest(tokenURL, form));
}
private IEnumerator SendTokenRequest(string url, WWWForm form)
{
using (WWW www = new WWW(url, form))
{
yield return www;
if (string.IsNullOrEmpty(www.error))
{
// 응답 데이터 파싱
string responseText = www.text;
Dictionary<string, object> responseData = MiniJSON.Json.Deserialize(responseText) as Dictionary<string, object>;
if (responseData != null && responseData.ContainsKey("access_token"))
{
string accessToken = responseData["access_token"] as string;
yourAccessToken = accessToken;
logText.text = "액세스 토큰: " + accessToken;
// 여기에서 액세스 토큰을 사용하여 카카오 API에 요청을 보낼 수 있습니다.
// 추가 요청 및 데이터 처리를 위한 코드를 추가하세요.
}
else
{
logText.text = "액세스 토큰을 얻을 수 없습니다.";
}
}
else
{
logText.text = "토큰 요청 중 오류 발생: " + www.error;
}
}
}