KakaoログインAPI JavaScriptを使用して実装します.
なぜログインAPIを使用するのか
なぜログインAPIを使用するのですか?
パスワードの暗号化、会員加入時の認証と暗号化などの登録と会員加入機能
注意すべき点が多いので、ログインと登録コストの代わりにログインAPIを使用します.
会員の管理を容易にする.
プレイヤーの立場では、会員加入プログラムが減少し、使用性が向上する.
優先パラメータ
Kakaoログイン基本設定
KACAログインAPIの使い方はREST APIとJavaScript APIがありますが、私はWebバージョンでブラウザがJavaScriptをサポートしているのでJavaScriptバージョンを使って実現しています.
KAKAOを使用してAPIにログインするには、KAKAO DEVELOPERのWebサイトからアクセスキーを取得する必要があります.
https://developers.kakao.com/docs/latest/ko/kakaologin/js
アプリケーションを追加ココアapiアクセスキーを生成→流出nono(セキュリティ上の問題)
登録プラットフォームのWebサイトドメイン
リダイレクトURIの登録(restapiを使用する場合は登録が必要)
同意した項目を検査する
1.必要な同意(ユーザーが同意を選択した場合に使用可能)
KACAログインを実現します。
html
<!-- 로그인 모달창 -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="d-flex justify-content-center">
<a href="#" class="text-reset p-2" title="Tooltip">비밀번호 찾기</a>
<span class="p-2"> | </span>
<a href="registerUser" class="text-reset p-2" title="Tooltip">회원가입</a>
</div>
</div>
<div class="modal-footer ">
<p>SNS 로그인</p>
<div class="border p-3 mb-4 bg-light d-flex justify-content-between">
<%--
카카오 로그인 처리중 중 오류가 발생하면 아래 경고창에 표시된다.
카카오 로그인 오류는 스크립트에서 아래 경고창에 표시합니다.
--%>
<div class="alert alert-danger d-none" id="alert-kakao-login">오류 메세지</div>
<a id="btn-kakao-login" href="kakao/login">
<img src="//k.kakaocdn.net/14/dn/btroDszwNrM/I6efHub1SN5KCJqLm1Ovx1/o.jpg" width="200" alt="카카오 로그인 버튼"/>
</a>
</div>
<form id="form-kakao-login" method="post" action="kakao-login">
<input type="hidden" name="email"/>
<input type="hidden" name="name"/>
<input type="hidden" name="img"/>
</form>
</div>
</div>
</div>
</div>
jspでのJavaScript
$(function(){
$("#btn-kakao-login").click(function(event){
// a태그 기능 실행멈춤.
event.preventDefault();
// 카카오 로그인 실행시 오류메시지를 표시하는 경고창을 화면에 보이지 않게 한다.
$("alert-kakao-login").addClass("d-none");
// 사용자 키를 전달, 카카오 로그인 서비스 초기화.
Kakao.init('본인 접근키 입력');
// 카카오 로그인 서비스 실행하기 및 사용자 정보 가져오기.
Kakao.Auth.login({
success:function(auth){
Kakao.API.request({
url: '/v2/user/me',
success: function(response){
// 사용자 정보를 가져와서 폼에 추가.
var account = response.kakao_account;
$('#form-kakao-login input[name=email]').val(account.email);
$('#form-kakao-login input[name=name]').val(account.profile.nickname);
$('#form-kakao-login input[name=img]').val(account.profile.img);
// 사용자 정보가 포함된 폼을 서버로 제출한다.
document.querySelector('#form-kakao-login').submit();
},
fail: function(error){
// 경고창에 에러메시지 표시
$('alert-kakao-login').removeClass("d-none").text("카카오 로그인 처리 중 오류가 발생했습니다.")
}
}); // api request
}, // success 결과.
fail:function(error){
// 경고창에 에러메시지 표시
$('alert-kakao-login').removeClass("d-none").text("카카오 로그인 처리 중 오류가 발생했습니다.")
}
}); // 로그인 인증.
}) // 클릭이벤트
})// 카카오로그인 끝.
kakao.auth.login(auth)を要求すると、有効時間が存在するトークンが与えられます.そのurlが/v 2/user/meで会員を加入させる場合は、パスワード以外(パスワードはもちろん提供できません)、他の情報をcontrollerに送信してユーザー情報を追加することもできます.
つまり、登録ボタン一つで会員口座に入れます.
上のコードでは、email、ニックネーム、imgをインポートしてフォームに入れ、コントローラとしてコミットします.
Controller
// kakao로그인 요청을 처리한다.
@PostMapping("/kakao-login")
public String loginWithKakao(KakaoLoginForm form){
log.info("카카오 로그인 인증정보:"+ form);
User user = User.builder()
.email(form.getEmail())
.name(form.getName())
.img(form.getImg())
.loginType(KAKAO_LOGIN_TYPE)
.build();
User savedUser = userService.loginWithKakao(user);
// 저장된 회원정보가 없으면 전달받은 회원정보를 세션에 저장, 있으면 기존 정보 저장.
if(savedUser != null) {
SessionUtils.addAttribute("LOGIN_USER", savedUser);
}else {
SessionUtils.addAttribute("LOGIN_USER", user);
}
return "redirect:/";
}
これらの伝達された情報をPOSTで受信し、これらの情報をuserオブジェクトに格納し、テーブルに同じemailがあるかどうかを確認し、存在する場合はsavedUserをセッションに保存する.存在しない場合は、ユーザー情報をテーブル(サービス)に保存し、セッションに保存し、プライマリ・ロケーションに移動します.
loginTypeで通常のログイン名と区別します.
Service
// 카카오 로그인
public User loginWithKakao(User user) {
User savedUser = userMapper.getUserByEmail(user.getEmail());
if(savedUser == null) {
userMapper.addUser(user);
}
return savedUser;
}
会員情報が保存されているかどうかを確認する過程だ.Reference
この問題について(KakaoログインAPI JavaScriptを使用して実装します.), 我々は、より多くの情報をここで見つけました https://velog.io/@ggujunhee/카카오로그인API-자바스크립트로-구현하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol