블로그

미스터디벨로

[Vue js] 카카오 로그인 연동

1. Kakao Developers 셋팅 - https://developers.kakao.com Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com로그인 -> 내 애플리케이션 -> 애플리케이션 추가하기로 앱 추가 요약 정보 -> JavaScript 키 기록  플랫폼 -> 사이트 도메인 등록(http://localhost 가능) 카카오 로그인 -> ON -> Rdeirect URL 등록  동의항목 -> 카카오 계정(이메일) 동의  2. FrontEnd  - public/index.html에 스크립트 추가<script src="//developers.kakao.com/sdk/js/kakao.js"></script>  - component<template> <section class="test"> <div v-on:click="kakaoLoginBtn">카카오 연동</div> </section> </template> <script> export default { name: "test", methods: { kakaoLoginBtn:function(){ window.Kakao.init('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') // Kakao Developers에서 요약 정보 -> JavaScript 키 if (window.Kakao.Auth.getAccessToken()) { window.Kakao.API.request({ url: '/v1/user/unlink', success: function (response) { console.log(response) }, fail: function (error) { console.log(error) }, }) window.Kakao.Auth.setAccessToken(undefined) } window.Kakao.Auth.login({ success: function () { window.Kakao.API.request({ url: '/v2/user/me', data: { property_keys: ["kakao_account.email"] }, success: async function (response) { console.log(response); }, fail: function (error) { console.log(error) }, }) }, fail: function (error) { console.log(error) }, }) } } } </script> <style scoped> .test{ display:flex; justify-content: center; align-items: center; height:100vh; } div{ width: 200px; height:40px; background-color:#fdd101; color:white; display:flex; align-items: center; justify-content: center; cursor:pointer; } </style>  3. 테스트

미스터디벨로vuejs카카오로그인oauth

미스터디벨로

[Vue js] 구글 로그인 (OAuth) 연동

https://console.cloud.google.com/ Google Cloud Platform하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.accounts.google.com 사진 순서대로 하면 걍됨 1. Oauth 동의화면 - Ouath 동의화면 검색해서 찾아들어가기 - 좌측 상단 프로젝트 선택 - 새 프로젝트  - 프로젝트 이름 입력하고 만들기  - 외부 선택 후 만들기  - 앱 정보 입력중 선택한 부분만 입력후 "저장 후 계속"  - 범위 추가(이메일 등)한 뒤 "저장 후 계속"  - 그냥 쭉쭉 "저장 후 계속"  - 좌측 OAuth 동의 화면 클릭 -> 앱 게시  2. 사용자 인증 정보 - 사용자 인증 정보(OAuth 클라이언트 ID) 만들기  - 선택부분 입력후 만들기     * 승인된 리디렉션 URI는 frontend 주소입력  - OAuth 클라이언트가 만들어졌고 이중 클라이언트 ID 복사  3. FrontEnd public/index.html head에 meta 추가<script src="https://apis.google.com/js/platform.js" async defer></script> /* 아까 복사한 클라이언트 ID를 아래 content 부분에 넣어주세요 */ <meta name="google-signin-client_id" content="173003970129-edlpenahqprvv9amg1udu63h80u4g95e.apps.googleusercontent.com" />  component 작성(test.vue)<template> <section class="test"> <div v-on:click="GoogleLoginBtn">구글 OAuth2 연동</div> <div id="my-signin2" style="display: none"></div> </section> </template> <script> export default { name: "test", methods: { GoogleLoginBtn:function(){ var self = this; window.gapi.signin2.render('my-signin2', { scope: 'profile email', width: 240, height: 50, longtitle: true, theme: 'dark', onsuccess: this.GoogleLoginSuccess, onfailure: this.GoogleLoginFailure, }); setTimeout(function () { if (!self.googleLoginCheck) { const auth = window.gapi.auth2.getAuthInstance(); auth.isSignedIn.get(); document.querySelector('.abcRioButton').click(); } }, 1500) }, async GoogleLoginSuccess(googleUser) { const googleEmail = googleUser.getBasicProfile().getEmail(); if (googleEmail !== 'undefined') { console.log(googleEmail); } }, //구글 로그인 콜백함수 (실패) GoogleLoginFailure(error) { console.log(error); }, } } </script> <style scoped> .test{ display:flex; justify-content: center; align-items: center; height:100vh; } div{ width: 200px; height:40px; background-color:#ffffff; border:1px #a8a8a8 solid; color:black; display:flex; align-items: center; justify-content: center; cursor:pointer; } </style>  4. 테스트

미스터디벨로vuejs구글로그인oauth

미스터디벨로

[Vue js] 카카오 맵 api 로 현재위치 마커찍는 코드

https://developers.kakao.com1. Kakao Developers에서 선행작업내 애플리케이션 생성플랫폼 - Web - 사이트 도메인등록(http://localhost 가능)요약 정보 - Java Script 키 복사 2. FrontEnd Component<template> <section class="test"> <div id="map"></div> </section> </template> <script> export default { name: "test", data() { return { map: null, markers: [], latitude: 0, longitude: 0 } }, created() { if (!("geolocation" in navigator)) { return; } // get position navigator.geolocation.getCurrentPosition(pos => { this.latitude = pos.coords.latitude; this.longitude = pos.coords.longitude; if (window.kakao && window.kakao.maps) { this.initMap(); } else { const script = document.createElement("script"); /* global kakao */ script.onload = () => kakao.maps.load(this.initMap); script.src = "//dapi.kakao.com/v2/maps/sdk.js?autoload=false&appkey=복사한 Java Script 키 입력"; document.head.appendChild(script); } }, err => { alert(err.message); }) }, methods: { initMap() { const container = document.getElementById("map"); const options = { center: new kakao.maps.LatLng(33.450701, 126.570667), level: 5, }; this.map = new kakao.maps.Map(container, options); this.displayMarker([[this.latitude, this.longitude]]); }, displayMarker(markerPositions) { if (this.markers.length > 0) { this.markers.forEach((marker) => marker.setMap(null)); } const positions = markerPositions.map( (position) => new kakao.maps.LatLng(...position) ); if (positions.length > 0) { this.markers = positions.map( (position) => new kakao.maps.Marker({ map: this.map, position, }) ); const bounds = positions.reduce( (bounds, latlng) => bounds.extend(latlng), new kakao.maps.LatLngBounds() ); this.map.setBounds(bounds); } } } } </script> <style scoped> .test { display: flex; flex-direction: column; justify-content: center; align-items: center; height: 100vh; } #map { width: 400px; height: 500px; border: 1px #a8a8a8 solid; } </style>  3. TEST

미스터디벨로vuejs카카오지도

채널톡 아이콘