Vue.js中Line第三方登录实现[亲测可用]

举报
芈渡 发表于 2020/09/09 14:47:45 2020/09/09
【摘要】 国际化的项目就会用用到一些第三方的登录api,这次记录一下Line 的!按步骤来:注册Line账号就不说了,虽然麻烦,这就自己去想办法了!demo 请狠狠的戳这里 http://download.lllomh.com/cliect/#/product/J417081951162505一:开发者平台配置去Line 的开发者平台 新建一个App:https://developers.line....

国际化的项目就会用用到一些第三方的登录api,这次记录一下Line 的!

按步骤来:

注册Line账号就不说了,虽然麻烦,这就自己去想办法了!

demo 请狠狠的戳这里  http://download.lllomh.com/cliect/#/product/J417081951162505

一:开发者平台配置

去Line 的开发者平台 新建一个App:

https://developers.line.biz/en/



顺便写好资料:


动态演示:



这要 用到的 就是2个:

Channel ID 跟 Channel secret  对应

'client_id'    => '5431649755','client_secret'=> '234b6e64c13285e6d058ff7b1bbc8e'

关键是这里的重定向地址要填(几乎所有第三方都要):


二:代码部署

核心获取第三方的部分

壹:组件封装:

1,起始:这里就

   const { code } = queryString.parse(window.location.search.replace('?', ''))

            if(!code) return

这里 页面回调刷新的时候发现url 有这个code 这个值的话 就执行获取 token 的方法,反之不执行:

 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")// 这里拿到返回的第三方的结果个人信息
                return new OAuthResult(data)
            },

贰:组件封装:

1,组件使用:

除了 那个 三个参数,其他的一些 就看着修改整合吧

<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' //这里要跟开发者平台中填写的一致
            }
        },

        // 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>

记得安装 这个插件所需的插件:

    import queryString from 'querystring'
    import axios from 'axios'
    import OAuthRequest from '../Entities/OAuthRequest'
    import linq from 'linq'
    import OAuthResult from '../Entities/OAuthResult'

结果:




【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。