무료호스팅을 이용해서 redirect_uri를 이용하려 합니다.
oauth폴더를 만들고 해봤는데 원하는값이 안받아와집니다.
정확히 리다이렉트 uri가 뭔지 궁금합니다.
설명이 잘 되어있는곳을 찾을 수 없군요…
무료호스팅을 이용해서 redirect_uri를 이용하려 합니다.
oauth폴더를 만들고 해봤는데 원하는값이 안받아와집니다.
정확히 리다이렉트 uri가 뭔지 궁금합니다.
설명이 잘 되어있는곳을 찾을 수 없군요…
knifelemon님이 만든 페이지에서 로그인을 요청하게 되면 카카오의 로그인 페이지로 이동합니다. 사용자가 아이디/패스워드를 넣은 후 로그인에 성공하면 다시 knifelemon님이 만든 페이지로 돌아가야 하는데 그 돌아갈 페이지의 주소가 redirect_uri 입니다. 즉 oauth 폴더를 만드실게 아니라 로그인 성공 후 발급된 코드값을 받아줄 페이지가 필요합니다.
자세한 설명은 아래의 내용을 참조하시면 될 것 같습니다.
https://developers.kakao.com/docs/latest/ko/kakaologin/prerequisite#redirect-uri
먼저 답글 감사합니다.
말씀해주신 REST api를 참고하여 작성하려했습니다.
하지만 dothome이라는 무료 도메인을 이용해 테스트를 하려고 해봤지만 아래 문구만 리턴시키네요.
<!-- Main component for a primary marketing message or call to action -->
<div class="jumbotron vs-jumbo">
<h1 class="c898989"><i class="fa fa-ban"></i> Error <font class="cDothome">403</font> Forbidden.</h1>
<h2 class="cDothome"><b>엑세스가 금지되었습니다.</b></h2>
<p class="c000">요청하신 페이지는 엑세스가 금지되었습니다.<br>
요청하신 디렉토리내에 인덱스페이지가 없으신 경우 업로드 하신 후 접속해 보시기 바랍니다.</p>
</div>
내 애플리케이션 부분에도 Web부분에 저의 닷홈주소를 적어주었습니다.
이는 redirect uri 문제라기는 dothome의 설정 이슈인 것 같은데요. 외부에서 접속 가능한 페이지가 있나요?
연결페이지 하나있습니다.
https://dev.kakao.com/docs/js#카카오-로그인-예제:-커스톰-로그인-버튼을-이용한-카카오-로그인
에 나오는 소스를 html으로 업로드하여 http://계정.dothome.co.kr/login.html 와 같이 업로드하였습니다.
계정.dothome.co.kr
이 앱설정에 잘 등록되어 있다면 JS 소스구현만으로 값을 받아올 수 있습니다. 그런데 어떤값을 원하시는건가요?http://cafefiles.naver.net/20160531_86/role___play_1464659870437F6CCW_PNG/ĸó.PNG
와 같이 잘 보입니다.
JS로만 받아오는 방식보다 .Net 언어를 사용하여 받아오려합니다.
로그인 토큰은 어디서든 받아오든 상관이 없는것인가요?
처음부터 차근차근진행하려고 REST API에 코드받기 부분을 진행하려합니다.
REST API만으로 토큰까지 받아 앱 로그인까지 진행하려합니다.
login.html
에서 사용하신 소스는 JS 이기 때문에 REST API 방식으로 코드를 받아올 수 없습니다. 대신 붙여넣은 JS소스에 약간의 추가 구현만 하시면 code발급과정없이 accessToken을 바로 발급받게 됩니다. 그대로 붙여넣으셨다면
로그인 버튼을 누르고 → 카카오계정으로 로그인 → 다시 본창에서 alert 창이 뜨면서 accessToken값이 나타나게 됩니다.
여기서 오류가 있다면 dev.kakao.com 에서 발급한 JS KEY를 잘 삽입하셨는지, dev.kakao.com 의 앱설정에서 해당 도메인인 XXXX.dothome.co.kr 을 잘 등록하셨는지 확인해주세요.
위는 JS 로의 구현시의 설명이고 .Net 을 사용하실거면 서버에 .Net 이 돌아가게 설정을 먼저 하시고 .Net 에서 http call이 가능하도록 간단한 구현부터하신 후에 redirect_uri을 확인하시는게 좋을 것 같습니다.
이후 REST API 는 이 문서를 https://dev.kakao.com/docs/restapi 참고하셔서 구현하세요.
.Net 의 예제는 없지만 https://devtalk.kakao.com/c/rest-api/rest-api-faq 에 보시면 Java, PHP 로 된 예제들이 있습니다. 약간이나마 도움이 되실 것 같습니다.
감사합니다. 하나 더 질문 가능한가요?
.Net에서 코드를 짜서
의 링크를 읽어와봤습니다.
그러자
`<div id="daumkakaoWrap" class="wrap_agree">
<div id="daumkakaoHead" class="head_agree">
<h1 class="tit_agree">카카오계정 로그인</h1>
</div>
<hr class="hide">
<div id="daumkakaoContent">
<article id="mArticle">
<div class="info_app">
<span class="thumb_app"><img src="https://mud-kage.kakao.com/14/dn/btqbjCnoZ8A/MyiKigHpJbSKusX0u3TPL1/o.jpg" width="59" height="59" class="img_app" alt="app"></span>
<span class="desc_app">
<em class="txt_by">개인</em>
<strong class="txt_name">My.NetTest</strong>
</span>
</div>
<form id="confirmForm" method="post" class="info_interlink">
<p class="desc_info"></p>
<input id="userOAuthApproval" name="user_oauth_approval" value="false" type="hidden"/>
<input name="stsc" value="LR71Tcb39hN4yuhBeF1mffym8-n8BTda4MceR48bc4sy4pnJVgf2y5ljR4YrMP4PpIRCgJU3KGGRB_RfR06gafoqJfXs221vJjUPCpbgzYZ_AmTGy3t9c7fx73sYbQH425PIukQG5zF4r0mKnYBQ9hnxeYXVY5PKCLpr8nqn8o8bPrnQMCosbzxR350jl8OEv5cCnD4XO1ZlM32YLBQctT0OHl4UF0dRmbxmphW-qPPVhOXthIoVtIBW8sXSO8pab3rUa_lAZGIZd_UMz0wo-Z_Dypt0W_Y3wVZSREPtK9E" type="hidden"/>
<h3>카카오 개인정보 제3자 제공동의</h3>
<p>이 서비스는 카카오계정으로 연결을 시작하기 위하여 아래 개인정보를 요청합니다.</p>
<div class="info_box">
<div>- 제공받는 자: 개인</div>
<div>- 제공받는 정보: 프로필 정보(닉네임/프로필 사진)</div>
<div>- 제공받는 목적: My.NetTest 서비스 제공을 위해</div>
<div>- 보유기간: 서비스 탈퇴 시 지체없이 파기</div>
</div>
<h3>서비스의 접근 권한</h3>
<p>이 서비스는 아래의 접근 권한을 가질 수 있습니다.</p>
<div class="info_box">
카카오스토리 글 목록
</div>
<div class="actions btn_split">
<button id="denyButton" type="button" class="btn btn_noagree">동의안함</button>
<button id="acceptButton" type="button" class="btn btn_agree" disabled>동의</button>
</div>
</form>
</article>
</div>
</div>
라고 되더군요.
코드받는거에는 {redirect_uri}?code={authorize_code} 형식으로 받아진다고 쓰여있는데… 저는 왜 저렇게 될까요?
저 화면은 정상적인 화면입니다. code를 넘겨주기 위해서는 로그인한 사용자의 동의가 필요합니다. 동의를 해야만 {redirect_uri}?code={authorize_code}
페이지로 전환됩니다. 동의과정은 한번만 이루어집니다.
감사합니다. ㅎㅎ
동의과정을 한 후 다시 해당링크에서 코드를 카지고 오려했습니다.
라고 400 오류를 반환하네요…
보여주신 화면만으로는 원인을 알 수 없습니다. 닷넷쪽 오류인것 같네요
Public Async Sub GetCode()
Dim getReq As HttpWebRequest = WebRequest.Create("https://kauth.kakao.com/oauth/authorize?client_id=7ed6e0361ccdf992c993ad189834f076&redirect_uri=https://kauth.kakao.com/oauth&response_type=code")
With getReq
.Host = "kauth.kakao.com"
.Method = "GET"
.KeepAlive = False
.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0"
.CookieContainer = logincookie
.AllowAutoRedirect = True
.PreAuthenticate = True
End With
Dim response As System.Net.HttpWebResponse = Await getReq.GetResponseAsync()
Dim html As String = Nothing
Using sr As New StreamReader(response.GetResponseStream, Encoding.UTF8)
html = Await sr.ReadToEndAsync
End Using
response.Dispose()
Clipboard.SetText(html)
MsgBox(html)
End Sub
이렇게 작성하였습니다…
동의를 하기전에는 로그인하라는 카카오페이지 html소스가 복사되었지만 동의를 한 후에는 400오류만 반환하네요.
AbortDelegate에는 쓰기 전용 속성은 지원되지 않습니다. 라는데
해당값은 GET인데 POST로 해야하나요?
WebRequest.Create 네 넘겨주는 url 이 잘못되었습니다. redirect_uri 에는 xxx.dothome.com
이 넘어가야 할 것 같네요.
그리고 등록되어 있는 주소가 xxxxx.dothome.co.kr 이네요. 이것도 확인해주세요.
redirect_uri를 http://계정.dothome.co.kr/oauth 로 해봤습니다. 그래도 400오류가 뜹니다.
애플리케이션 도메인주소도 http://계정.dothome.co.kr에 /oauth입니다…
redirect_uri
파라미터는 https://
로 주셨는데 등록은 http://
로 해놓으셨네요. 한번 같게 해보시겠어요?
http://로 교체했는데 이제 400오류대신
페이지를 표시할 수 없습니다.</b></h2> <p class="c000">요청하신 파일을 찾을 수 없거나, 서버에서 제거 되었습니다.<br> URL을 확인해 주시기 바랍니다.
라는 오류가 리턴됩니다.
웹 서버가 https만 지원하는 서버인가요? 그렇다면 둘 다 https 로 맞춰주시는게 좋겠네요.
웹서버는 http만 지원합니다.