Vue.js中Line第三方登錄api的實(shí)現(xiàn)代碼
國(guó)際化的項(xiàng)目就會(huì)用用到一些第三方的登錄api,這次記錄一下Line 的!
按步驟來(lái):
注冊(cè)Line賬號(hào)就不說(shuō)了,雖然麻煩,這就自己去想辦法了!
demo 請(qǐng)狠狠的戳這里 http://download.lllomh.com/cliect/#/product/J417081951162505
一:開(kāi)發(fā)者平臺(tái)配置
去Line 的開(kāi)發(fā)者平臺(tái) 新建一個(gè)App:
https://developers.line.biz/en/
順便寫(xiě)好資料:
動(dòng)態(tài)演示:
這要 用到的 就是2個(gè):
Channel ID 跟 Channel secret 對(duì)應(yīng)
'client_id' => '5431649755', 'client_secret'=> '234b6e64c13285e6d058ff7b1bbc8e'
關(guān)鍵是這里的重定向地址要填(幾乎所有第三方都要):
二:代碼部署
核心獲取第三方的部分
壹:組件封裝:
1,起始:這里就
const { code } = queryString.parse(window.location.search.replace('?', ''))
if(!code) return
這里 頁(yè)面回調(diào)刷新的時(shí)候發(fā)現(xiàn)url 有這個(gè)code 這個(gè)值的話 就執(zhí)行獲取 token 的方法,反之不執(zhí)行:
async created() {
const { code } = queryString.parse(window.location.search.replace('?', ''))
if(!code) return
const result = await this.getToken(code)
const { data } = await this.getProfile(result.token)
if(this.friendRequired) {
const flag = await this.checkFriend(result.token)
if(!flag) {
this.error = this.friendErrorTest
}
}
if(!this.error) {
const response = Object.assign(data, result.getPostable())
this.$emit('result', response)
}
},
async getToken(code) {
const result = new OAuthRequest({
code: code,
clientId: this.clientId,
clientSecret: this.clientSecret,
redirectUri: this.callbackUri
})
const params = new URLSearchParams()
linq.from(result.getPostable()).select(x => params.append(x.key, x.value)).toArray()
const { data } = await axios.post('https://api.line.me/oauth2/v2.1/token', params)
console.log(data,"data")// 這里拿到返回的第三方的結(jié)果個(gè)人信息
return new OAuthResult(data)
},
貳:組件封裝:
1,組件使用:
除了 那個(gè) 三個(gè)參數(shù),其他的一些 就看著修改整合吧
<template>
<div id="app">
<line-login-button
:client-id="clientId"
:client-secret="clientSecret"
:callback-uri="callbackUri"
@result="result"
add-friend
friend-required></line-login-button>
1232131
</div>
</template>
<script>
import LineLoginButton from './components/LineLoginButton'
export default {
data() {
return {
clientId: '2323649755',
clientSecret: '323128b6e64c13285e6d058ff7b1bbc8e',
callbackUri: 'http://localhost:8080' //這里要跟開(kāi)發(fā)者平臺(tái)中填寫(xiě)的一致
}
},
// created() {
// this.clientId = process.env.VUE_APP_LINE_CLIENT_ID
// this.clientSecret = process.env.VUE_APP_LINE_CLIENT_SECRET
// this.callbackUri = process.env.VUE_APP_LINE_CALLBACK_URL
// },
components: {
LineLoginButton
},
methods: {
result(res) {
console.log(res)
}
}
}
</script>
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
}
#nav {
padding: 30px;
}
#nav a {
font-weight: bold;
color: #2c3e50;
}
#nav a.router-link-exact-active {
color: #42b983;
}
</style>
記得安裝 這個(gè)插件所需的插件:
import queryString from 'querystring' import axios from 'axios' import OAuthRequest from '../Entities/OAuthRequest' import linq from 'linq' import OAuthResult from '../Entities/OAuthResult'
結(jié)果:
總結(jié)
到此這篇關(guān)于Vue.js中Line第三方登錄api的實(shí)現(xiàn)代碼的文章就介紹到這了,更多相關(guān)Line第三方登錄api內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用VitePress搭建及部署vue組件庫(kù)文檔的示例詳解
這篇文章主要介紹了使用VitePress搭建及部署vue組件庫(kù)文檔,本文以element-plus作為示例來(lái)搭建一個(gè)文檔,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
element?表格多級(jí)表頭子列固定的實(shí)現(xiàn)
本文主要介紹了element?表格多級(jí)表頭子列固定的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
Vuerouter的beforeEach與afterEach鉤子函數(shù)的區(qū)別
本文詳細(xì)的介紹了Vuerouter的beforeEach與afterEach鉤子函數(shù)的區(qū)別和使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
Vue3中從一個(gè)頁(yè)面(index)傳輸數(shù)值到另一個(gè)頁(yè)面(form)的方法詳解
在 Vue 3 開(kāi)發(fā)中,經(jīng)常需要在不同組件或頁(yè)面之間傳遞數(shù)據(jù),例如從 index 頁(yè)面獲取某個(gè)數(shù)值(如 cntr、tradeId)后,將其傳輸?shù)?nbsp;form 頁(yè)面進(jìn)行填寫(xiě)或編輯,本文將介紹幾種常見(jiàn)的數(shù)據(jù)傳輸方法,并為每種方法提供一個(gè)小的 Demo 代碼示例,需要的朋友可以參考下2025-02-02
vue項(xiàng)目?jī)?nèi)存溢出問(wèn)題及解決方案
這篇文章主要介紹了vue項(xiàng)目?jī)?nèi)存溢出問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
解決vue打包后刷新頁(yè)面報(bào)錯(cuò):Unexpected token <
這篇文章主要介紹了解決vue打包后刷新頁(yè)面報(bào)錯(cuò):Unexpected token <相關(guān)知識(shí)點(diǎn),需要的朋友們參考下。2019-08-08
Vuepress 搭建帶評(píng)論功能的靜態(tài)博客的實(shí)現(xiàn)
這篇文章主要介紹了Vuepress 搭建帶評(píng)論功能的靜態(tài)博客的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
Vue動(dòng)態(tài)組件與內(nèi)置組件淺析講解
閑話少說(shuō),我們進(jìn)入今天的小小五分鐘學(xué)習(xí)時(shí)間,前面我們了解了vue的組件,我們本文主要是講解vue的動(dòng)態(tài)組件和內(nèi)置組件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08

