[Nuxt.js]Nuxt Googleログイン、NAVERログイン
Nuxtjsを使用してGoogleログインとNaverログインを実現しました.
フロントエンドのみを実装し,スプリングセキュリティを適用したバックエンドに関連付ける方法も検討する必要がある.
まずはネイバー登録の方が簡単なのでネイバー登録を書いておきましょう!
1)
Googleログインではgoogle-signin-vueライブラリを使用できますが、私はNAVERログインボタンとボタンを組み合わせて使用したいので、ライブラリのコードを直接変換しました.
**私にとってcallbackは/loginです.
1)
ここまではNuxtjs+(NAVERログイン、Googleログイン).
後で、追加または変更が必要な部分があれば、追加します!
修正が必要な箇所があれば、コメントにフィードバックしてください:)
ブログ1参照
参考ブログ2
フロントエンドのみを実装し,スプリングセキュリティを適用したバックエンドに関連付ける方法も検討する必要がある.
まずはネイバー登録の方が簡単なのでネイバー登録を書いておきましょう!
Nuxt.js+NAVERログイン
1.NAVERの作成者が作成したアプリケーションを登録する
로그인 후 -> Application -> 애플리케이션 등록 -> 사용 API : 네이버 로그인 -> 필요한 항목체크 -> 서비스 환경 각자에 맞게 설정 후(서비스 URL: 로그인으로 보내기 전 Url/ Callback URL: 네이버 로그인 성공후 돌아올 URL) -> 등록
私の場合、次のurl設定を行いました.2.Nuxtでのログインページの実装
1)
pages/bonaem-mobile/account/index.vue
<template>
<div>
<Login />
</div>
</template>
<script>
import Login from '@/components/bonaem-mobile/Account/Login'
export default {
components: {
Login
}
}
</script>
2) components/bonaem-mobile/Account/Login.vue
<template>
<img @click="loginWithNaver()" class="naver-btn" src="@/assets/login/naver_login.png">
</template>
<script>
export default {
name: 'Login',
methods: {
loginWithNaver () {
const naverLogin = new naver.LoginWithNaverId({
clientId: '클라이언트 아이디', //Application -> 내 애플리케이션 -> 개요 -> ClientId를 확인
callbackUrl: `${window.location.origin}/naver-login`,
callbackHandle: true
})
naverLogin.init()
naverLogin.reprompt()
}
}
}
</script>
3) nuxt.config.jsはscriptに'https://static.nid.naver.com/js/naveridlogin_js_sdk_2.0.2.js'
を追加 script: [
{ src: 'https://static.nid.naver.com/js/naveridlogin_js_sdk_2.0.2.js' }
]
4) pages/naver-login/index.vue
<template>
<section class="section">
네이버 로그인 OK
</section>
</template>
<script>
export default {
name: 'Login',
mounted () {
const naverLogin = new naver.LoginWithNaverId({
clientId: '클라이언트 아이디'
})
naverLogin.init()
naverLogin.getLoginStatus(function(status) {
if (status) {
const info = {
id: naverLogin.user.id,
age: naverLogin.user.age,
gender: naverLogin.user.gender,
nickname: naverLogin.user.nickname,
profile_image: naverLogin.user.profile_image,
}
console.log(naverLogin.user)
console.log(naverLogin.accessToken)
} else {
console.log('AccessToken이 올바르지 않습니다.')
}
})
}
}
</script>
Nuxt.js+Googleログイン
Googleログインではgoogle-signin-vueライブラリを使用できますが、私はNAVERログインボタンとボタンを組み合わせて使用したいので、ライブラリのコードを直接変換しました.
1.まずはGoogleよよよボタンを使います。
**私にとってcallbackは/loginです.
2.Nuxtでのログインページの実装
1)
components/bonaem-mobile/Account/Login.vue
<template>
<img @click="loginWithNaver()" class="naver-btn" src="@/assets/login/naver_login.png">
</template>
<script>
export default {
name: 'Login',
mounted () {
// google login
window.__google_oauth_useful_variables = {
client_id: '클라이언트아이디.apps.googleusercontent.com',
warning: true,
customButtonId: 'googleSignIn',
attachSignin: this.attachSignin,
onSignIn:this.onSignIn,
onFailSignIn:this.onFailSignIn
};
gapi.load('auth2', function(){
try {
window.auth2 = gapi.auth2.init({
client_id: window.__google_oauth_useful_variables.client_id,
cookiepolicy: 'single_host_origin',
});
}catch (e) {
window.__google_oauth_useful_variables.warning ? console.warn(e):null;
}
try {
if (window.__google_oauth_useful_variables.customButtonId){
window.__google_oauth_useful_variables.attachSignin(document.getElementById(window.__google_oauth_useful_variables.customButtonId));
}
}catch (e) {
window.__google_oauth_useful_variables.warning ? console.warn(e):null;
}
});
if(!this.customButton) {
gapi.signin2.render('googleSignIn', {
scope: this.scope,
width: this.width,
height: this.height,
longTitle: this.longTitle,
theme: this.theme,
onsuccess: this.onSignIn,
onfailure: this.onFailSignIn
});
}
this.validate();
},
methods: {
validate () {
if(typeof this.successCallBack === "undefined")
this.warning ? console.warn("Google Sign In --> Specify the success callback method to get the data") : null;
else if(typeof this.successCallBack !== "function")
this.warning ? console.warn("Google Sign In --> Success Callback must be a valid Function") : null;
if(typeof this.failureCallBack === "undefined")
this.warning ? console.warn("Google Sign In --> Specify the Failure callback method to get the Error data") : null;
else if(typeof this.failureCallBack !== "function")
this.warning ? console.warn("Google Sign In --> Failure Callback must be a valid Function") : null;
if(this.customButton) {
if(typeof this.customButtonId === 'undefined')
this.warning ? console.warn("Google Sign In --> Please Provide customButtonId or change the customButton to false") : null;
}
},
attachSignin (element) {
window.auth2.attachClickHandler(element, {},
function(googleUser) {
window.__google_oauth_useful_variables.onSignIn(googleUser);
}, function(error) {
window.__google_oauth_useful_variables.onFailSignIn(error);
}
);
},
onSignIn (googleUser) {
let id_token = googleUser.getAuthResponse().id_token;
let profile = googleUser.getBasicProfile();
if (typeof this.successCallBack === "function") {
const user = {
id_token,
id: profile.getId() ? profile.getId() : null,
name: profile.getName() ? profile.getName() : null,
image: profile.getImageUrl() ? profile.getImageUrl() : null,
email: profile.getEmail() ? profile.getEmail() : null
}
this.successCallBack(user);
}
},
onFailSignIn (error) {
if (typeof this.failureCallBack === "function")
this.failureCallBack(error);
},
successCallBack (user) {
console.log(user)
},
failureCallBack (errorData) {
console.log(errorData)
},
}
}
</script>
2) nuxt.config.jsはscriptに'https://apis.google.com/js/platform.js'
を追加 script: [
{ src: 'https://apis.google.com/js/platform.js' }
]
ここまではNuxtjs+(NAVERログイン、Googleログイン).
後で、追加または変更が必要な部分があれば、追加します!
修正が必要な箇所があれば、コメントにフィードバックしてください:)
ブログ1参照
参考ブログ2
Reference
この問題について([Nuxt.js]Nuxt Googleログイン、NAVERログイン), 我々は、より多くの情報をここで見つけました https://velog.io/@dasu/Nuxt.js-Nuxt-구글-로그인-네이버-로그인テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol