vue实现绑定微信登录全过程

这篇具有很好参考价值的文章主要介绍了vue实现绑定微信登录全过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、需求说明

通过vue绑定微信登录,首次进入获取code,通过code获取openId查用户,然后进行登录,第二次进入若绑定过微信,直接登录进入主界面,若没绑定过微信,则跳转到登录页面。

二、准备工作

(1)开通微信公众号的相关功能

vue实现绑定微信登录全过程
测试账号会有appID和appsecret,记住这两个,后续会用到
vue实现绑定微信登录全过程
填写js接口安全域名,这里填的就是你的服务器接口访问地址
vue实现绑定微信登录全过程
vue实现绑定微信登录全过程
这里先填自己本机的地址,记住不要加http等协议,端口号是你项目的端口号,例如我的项目端口号是8368
vue实现绑定微信登录全过程

(2)其他准备工作

redirect_uri和appid

appid就是你测试号类里面的appId
redirect_uri是自己配置的,比如你想访问http:192.168.1.117:8080/zy/project/index.html,那么你的redirect_uri可以就写成这个,那么这个地址下面的网页都可以访问
当你用浏览器访问https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxxxxxxxxxxx&redirect_uri=xxxxxxxxxxx&response_type=code&scope=snsapi_base#wechat_redirect这个链接的时候,会提示请在微信客户端打开,这个时候需要用微信开发者工具打开,在地址栏中输入这个链接,就可以了,成功访问后,会跳转到你redirect_uri重定向到的那个页面,并且地址栏中还会多了一个code,这样显示就说明成功获取到了code

scoped参数错误或者没有scoped权限

出现这个错误可以查一下你的redirect_uri填写是否正确,看一下微信公众平台的网页账号授权域名填写是否正确,看一下js接口安全域名填写是否正确文章来源地址https://www.toymoban.com/news/detail-495907.html

三、代码实现

// 你的路由
const routes = [
     {
        path:'/',
        redirect:'/login',
        component:()=> import('@/App'),
     },

]
// App.vue中
<template>
    <div id="app">
        <router-view> </router-view>
    </div>
</template>
<script>
import { getWxId, queryUser, bindWx } from '@/api/user'
import { getUrlParam } from '@/utils'
import { mapGetters } from 'vuex'

export default {
    name: 'App',
    computed: {
        ...mapGetters(['wxCode', 'wxId', 'userId']),//这里将获取到的code和openId都存到了store中了
    },
    created() {
        if (this.wxCode && this.wxId) {//如果获取到code和微信Id就去登录
            this.Login()
            return
        }
        //若没获取到就走下面这一步
        const code = getUrlParam('code') // 截取路径中的code

        if (!code) {
            console.log('获取微信code失败')
            return
        }
        this.$store.commit('user/SET_WX_CODE', code)
        this.getOpenIdAndWxUser(code)
    },
    methods: {
        getOpenIdAndWxUser(code) {
            getWxId(code)
                .then((res) => {
                    console.log(res)
                    if (!res.data) {
                        console.log('获取微信openId失败', res)

                        return
                    }
                    this.$store.commit('user/SET_WX_ID', res.data)//通过code获取到微信ID
                    console.log(this.wxCode, this.wxId)
                    this.Login()

                    // return getWxUser(result.data)
                })
                .catch((err) => {
                    console.log(err)
                })
        },
        Login() {
            queryUser({//根据微信ID查询用户
                page: 1,
                limit: 999,
                wxId: this.wxId,
            }).then((res) => {
                console.log(res)
                if (res.data.rows[0].wxId) {//查到了就去登录
                    const Base64 = require('js-base64').Base64
                    const username = Base64.encode(
                        Math.random().toString(16).substr(2) +
                            res.data.rows[0].username
                    )
                    const password = Base64.encode(
                        Math.random().toString(16).substr(2) +
                            res.data.rows[0].realPwd
                    )
                    this.$store
                        .dispatch('user/login', {
                            username: username,
                            password: password,
                        })
                        .then(() => {
                            this.$router.push({
                                path: '/home',
                            })
                        })
                        .catch((err) => {
                            console.log(err)
                        })
                } else {//查不到就去登陆页面
                    this.$router.push({
                        path: '/',
                    })
                    this.$store.commit(
                        'user/SET_USER_ID',
                        res.data.rows[0].userId
                    )
                    console.log(this.$store.state.user.userId)
                    this.getWxUser()//绑定用户,将微信ID添加到用户表里面
                }
            })
        },
        getWxUser() {
            console.log(this.$store.state.user.userId)
            bindWx({
                userId: this.$store.state.user.userId,
                wxId: this.wxId,
            }).then((res) => {
                console.log(res)
                if (res.code == 200) {//修改成功去登录
                    this.Login()
                }
            })
        },
    },
}
</script>

<style></style>

到了这里,关于vue实现绑定微信登录全过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 微信小程序引入dayjs依赖的全过程

    微信小程序引入dayjs依赖的全过程

    1.安装day.js npm install dayjs --save 2.点击小程序工具,Npm构造器 注意此操作会删除miniprogram_npm下的文件夹,操作之前应该备份,然后复制到此文件夹下面才不会影响原来的代码 3.页面使用 JS 中引入 var dayjs = require(\\\'dayjs\\\') 代码使用 var today = dayjs().format(\\\'YYYY-MM-DD HH:mm:ss\\\') https://www.c

    2024年02月07日
    浏览(11)
  • Vue项目部署上线全过程(保姆级教程)

    Vue项目部署上线全过程(保姆级教程)

    上线前准备 1.先在vue.config.js文件中配置反向代理解决跨域请求问题 2.在vue项目根目录运行 npm run build 打包完成后会在根目录生成dist文件夹,这个dist文件夹需要上传到服务器 3.链接云服务器,在 /usr/local/ 下创建 web文件夹 用来存放dist文件夹 通过可视化工具上传dist文件夹,上

    2024年01月23日
    浏览(13)
  • Vue项目分包打包配置(包含dev)全过程

    Vue项目分包打包配置(包含dev)全过程

    今天领导要求支援某项目的分包配置,emmm,在参考了公司其他项目的分包操作后,依葫芦画瓢,中间也踩了好几个坑,简单记录下过程。 哈哈哈,上来就踩坑了,我拉了代码后,直接哐哐整,然后一堆依赖报错,我才发现,同事新增了依赖包,我并不知道,然后就乖乖安装

    2024年02月05日
    浏览(10)
  • 【微信小程序】免费的高德地图api——获取天气(全过程)

    【微信小程序】免费的高德地图api——获取天气(全过程)

    介绍 这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 一个人为什么要努力? 我见过最好的答案就是:因为我喜欢的东西都很贵,

    2024年02月02日
    浏览(53)
  • 【微信小程序】使用和风天气接口api(全过程)——获取天气

    【微信小程序】使用和风天气接口api(全过程)——获取天气

    介绍 这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 一个人为什么要努力? 我见过最好的答案就是:因为我喜欢的东西都很贵,

    2023年04月08日
    浏览(31)
  • 微信小程序,https要求,从无到有全过程,总共就八步

    微信小程序,https要求,从无到有全过程,总共就八步

    以下教程中出现的截图,均是以下环境 服务器:阿里云 域名购买:阿里云 服务器操作系统:linux 1.腾讯云 2.阿里云 3.某某云 这里是哪一个不重要,现在服务器都很成熟,谁便宜买谁,最好装linux系统的 在哪里买的服务器最好就在哪里买域名 小程序是强行需要https的访问的,

    2024年02月03日
    浏览(11)
  • 微信小程序保存相册授权全过程:第一次授权、已授权、拒绝后再授权

    微信小程序保存相册授权全过程:第一次授权、已授权、拒绝后再授权

    微信小程序部分功能需要使用授权(也就是需要用户显式同意,系统会阻止开发者任何静默获取授权行为),以存储相册为例,用户需要获得\\\"scope.writePhotosAlbum\\\"权限 微信系统接口wx.getSetting可以获取已经获得的权限列表 在实际开发时,我们有时候并不会去特意处理权限,直接

    2024年02月09日
    浏览(10)
  • Unity 实现一个FPS游戏的全过程

    Unity是一款功能强大的游戏引擎,它提供了各种各样的工具和功能,以帮助开发者轻松地创建精美的3D游戏和应用程序。在本文中,我们将使用Unity实现一个FPS游戏的全过程,从场景设计、角色控制、敌人AI到最终的打包发布。 对啦!这里有个游戏开发交流小组里面聚集了一帮

    2024年02月05日
    浏览(12)
  • VR游戏开发:从想法到实现的全过程

    作者:禅与计算机程序设计艺术 《VR游戏开发:从想法到实现的全过程》 1.1. 背景介绍 1.2. 文章目的 1.3. 目标受众 1.1. 背景介绍 随着科技的不断发展,虚拟现实(VR)技术逐渐走入大众视野。在游戏领域,VR技术可以为玩家带来更加沉浸的体验,因此受到了越来越多游戏开发者

    2024年02月16日
    浏览(13)
  • uniapp - 微信小程序平台模板消息订阅功能,唤起订阅模板消息弹框、微信公众号向用户发送 “服务通知“ 实现全过程示例代码,支持一次性订阅与永久性订阅(注释详细,一键复制开箱即用)

    uniapp - 微信小程序平台模板消息订阅功能,唤起订阅模板消息弹框、微信公众号向用户发送 “服务通知“ 实现全过程示例代码,支持一次性订阅与永久性订阅(注释详细,一键复制开箱即用)

    本博客实现了uniapp微信小程序端,详细实现公众号订阅通知模板消息完整示例源码,一次性订阅与永久订阅均可,注释详细新手一看就懂! 效果如图所示,uniapp编译的微信小程序内点击按钮后,唤起模板消息订阅申请弹框,后续微信内会收到通知。

    2024年02月13日
    浏览(17)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包