业务流程:

1:首先需要一个按钮触发事件

2:调用微信小程序的登录接口wx.login,拿到code

3:调用微信小程序的获取用户信息的接口wx.getUserProfile,拿到用户的个人信息

4:拿到的个人信息调用后台的接口,把个人信息传给后台,登录成功并把相关信息存储在本地的缓存中,方便之后的开发使用

调用微信小程序的登录接口:wx.login(Object object)

调用微信获取用户个人信息的接口:wx.getUserProfile(Object object)

调用微信获取用户的当前设置的接口:wx.getSetting(Object object)

下面开始用代码介绍

wxml:

<view>
<button bindtap="login">登录</button>
</view>

js:

//登录按钮触发的事件
login(){
let that = this
//调用微信小程序的登录接口
wx.login({
success(e) {
that.data.loginInfo.code = e.code //拿到的code存储在data中
wx.showModal({
title: '温馨提示',
content: '微信授权登录后才能正常使用小程序功能',
cancelText: '拒绝',
confirmText: '同意',
success( sucessInfo ) {
//调用微信小程序的获取用户信息的接口
wx.getUserProfile({
desc: '用于完善会员资料', // 声明获取用户个人信息后的用途
lang: 'zh_CN',
success(info) {
//把获取到的信息复制到data中的loginInfo中
that.data.loginInfo = Object.assign( that.data.loginInfo, info )
//调用后台的接口,把所有整合的个人信息传过去
that.handlerLogin( that.data.loginInfo )
},
fail(e) {
console.log('获取用户信息失败', e) }
})
},
fail() {
console.log("拒绝")
},
complete() {}
}) },
fail(e) {
console.log('fail', e)
wx.showToast({
title: '网络异常',
duration: 2000
})
return
}
}) }
//调用后台的登录接口
handlerLogin( loginInfo ) {
let that = this
//login是后台接口封装的方法
login( loginInfo ).then(( res ) => {
console.log('登录成功', res)
let { cache_key, expires_time, token, userInfo } = res.data
//把用户信息存储到storage中,方便其它地方使用
wx.setStorageSync('cache_key', cache_key)
wx.setStorageSync('expires_time', expires_time)
wx.setStorageSync('token', token)
wx.setStorageSync('isLog', true)
wx.setStorageSync('userInfo', JSON.stringify( userInfo ))
wx.setStorageSync('loginRecord', new Date().getTime())
})
.catch(( res ) => {
console.log('catch', res)
})
.finally(() => {
console.log('finally')
})
}

参考文档:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html

参考文档:https://blog.csdn.net/weixin_48145150/article/details/123897786

微信小程序-实现微信登录的更多相关文章

  1. 微信小程序与微信公众号同一用户登录问题

    微信小程序与微信公众号同一用户登录问题 最近在做微信小程序与微信公众号登录合并的接口.整理相关资料以及个人认识的心得写了这篇文章与大家一起分享. 首先,简单说下我遇到的问题是我们的程序调用微信小程序得 ...

  2. java实现微信小程序服务端(登录)

    微信小程序如今被广泛使用,微信小程序按照微信官网的定义来说就是: 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验. 这就是微信小程序的魅力所在,有 ...

  3. 微信小程序(原名微信应用号)开发工具0.9版安装教程

    微信小程序全称微信公众平台·小程序,原名微信公众平台·应用号(简称微信应用号) 声明 微信小程序开发工具类似于一个轻量级的IDE集成开发环境,目前仅开放给了少部分受微信官方邀请的人士(据说仅200个名 ...

  4. 微信小程序之微信登陆 —— 微信小程序教程系列(20)

    简介: 微信登陆,在新建一个微信小程序Hello World项目的时候,就可以看到项目中出现了我们的微信头像,其实这个Hello World项目,就有一个简化版的微信登陆.只不过是,还没有写入到咱们自 ...

  5. 微信小程序和微信公众号的id是一个吗

    首先,简单说下我遇到的问题是我们的程序调用微信小程序得到openid,然后通过openID得到用户的唯一标识,用户得以登录,然而,当我们调用微信公众号也同样的到openid,同一以用户两个不同的ope ...

  6. 微信小程序(微信应用号)开发ide安装解决方法

    这两天整个技术圈都炸锅了,微信小程序(微信应用号)发布内测,首批200家收到邀请,但是没受邀请的同学,也不用担心,下面介绍一下解决方法. 首先需要下载ide,昨天只需要下载0.9版本的编辑器并替换文件 ...

  7. 微信小程序(微信应用号)组件讲解[申明:来源于网络]

    微信小程序(微信应用号)组件讲解[申明:来源于网络] 地址:http://www.cnblogs.com/muyixiaoguang/p/5902008.html

  8. [转]微信小程序、微信公众号、H5之间相互跳转

    本文转自:https://www.cnblogs.com/colorful-paopao1/p/8608609.html 转自慕课网 一.小程序和公众号 答案是:可以相互关联. 在微信公众号里可以添加 ...

  9. 微信小程序、微信公众号、H5之间相互跳转

    转自慕课网 一.小程序和公众号 答案是:可以相互关联. 在微信公众号里可以添加小程序. 图片有点小,我把文字打出来吧: 可关联已有的小程序或快速创建小程序.已关联的小程序可被使用在自定义菜单和模版消息 ...

  10. 使用Appium 测试微信小程序和微信公众号方法

    由于腾讯系QQ.微信等都是基于腾讯自研X5内核,不是google原生webview,需要打开TBS内核Inspector调试功能才能用Chrome浏览器查看页面元素,并实现Appium自动化测试微信小 ...

随机推荐

  1. AD笔记总结

    原理图要点: 1.新建工程, 新建的project是要以后缀PrjPCB2.新建原理图.PCB, 右键project,进行New添加3.新建原理图库.PCB库,右键project, 进行new添加 改 ...

  2. dialog弹窗里生成二维码 (reading qppendChild)

    在dialog弹窗里生成二维码第一次点击时 dialogFormVisible.value=false,二维码生成时会找不到对象可以用nextTick()函数 将二维码生成代码放到nextTick() ...

  3. java面经学习002

    2. Java都有哪些map,分别怎么实现的,具体讲 3. 除了LinkedHashMap,你还知道哪些有序map 4. ConcurrentHashMap讲一讲 5. 为什么要有线程池 6. 线程池 ...

  4. flutter 顶部导航tabbar自定义

    本文使用tabbar实现顶部横向滚动多个菜单. 实现tabbar搜索框功能加功能按钮. 话不多说,上代码! import 'package:flutter/cupertino.dart'; impor ...

  5. 关于webdriver和谷歌浏览器的那些事

    早上看了一个视频,讲述爬虫的,首先一开始就写了一行这样代码(如下): from selenium import webdriver # 创建浏览器对象 ,这会在电脑中打开浏览器窗口browser = ...

  6. linux相关命令-linux查看头两行、查看最后两行-查找一个文件里包含的error信息并且把它输出到另一个文件里-查看滚动日志-在一个目录下查找大于50M的文件-根据端口号去杀死某一个进程

    1.linux查看头两行.查看最后两行 使用head(查看前几行).tail(查看末尾几行).eg:查看/home/wenjian1的前10行内容,应该是:# head -n 10 /home/wen ...

  7. 21 forms组件-参数initial&instance应用

    简单来讲: 如果你想传入前端的页面中附带值,那么在实例化forms中: form = SecondModelForm(data=request.POST, instance=permission_ob ...

  8. Kafka的启动 并创建topic

    一.进入到kafka的bin目录下,运行 ./kafka-server-start.sh -daemon /app/kafka/config/server.properties 注意:如果是0.9版本 ...

  9. Mixly呼吸灯及可调灯(物联网)

    3挡可调灯 2秒呼吸灯

  10. c++学习7 指针与数组

    一 二维数组与数组指针的关系 二维数组名,代表的是第0行的行地址,"+1"是跳过一个行.而取" * "的话,则是在当前行地址基础上再取列地址,那么如果我们再取一 ...