微信小程序目前最新的授权登录接口-2021年10月份

微信小程序目前最新的授权登录接口-2021年10月份

效果图:

小程序授权登录效果图
说明:首先我们需要在app.js里用云函数获取到openid,然后在用户点击登录的时候用获取到的openid去用户表里查询是否有该用户,如果没有就把用户信息写入数据库里的用户表,再登录;如果有就直接登录;

直接上代码!

mypage.wxml代码:
<!--pages/mypage/mypage.wxml-->
<!-- 背景图 -->
<view class="bg-box"><image src="../image/mypagebg.png"></image>
</view><!-- 未登录 -->
<view wx:if="{{!UserLogin}}" class="login_box" bindtap="getUserProfile"><view class="userlogin"><view>点击登录</view><view style="font-size: 12px; color:grey;margin-top: 5px;">需要先完成授权登录才能使用服务哟(*v*)</view></view>
</view><!-- 已登录 -->
<view wx:else class="login_box"><view class="userAvatar_box" bindtap="secretEntrance"><image src="{{userInfo.avatarUrl}}"></image></view><view class="userlogin"><view style="font-weight:bold;">欢迎:{{userInfo.nickName}}</view><view><text style="font-size: 10px; color: gray;">微信用户</text></view><view><text style="font-size: 10px; color: red;">Lv:</text><text style="font-size: 10px; color: orange;">{{Lv}}</text></view></view>
</view><!-- 服务 -->
<view class="service_box"><view class="service_title">服务</view><view class="service_row" bindtap="goMycollection"><view class="service_icon"><image src="../image/mycollection.png"></image></view><view class="service_text">我的收藏</view></view><view class="service_row"><view class="service_icon "><image src="../image/kefu.png"></image></view><view class="service_text"><button open-type='contact' style="color:black;height:35px;line-height:35px;font-weight: lighter;padding:0;width:100%;border:none;background:#fff;font-size:14px;text-align:left;">在线客服</button></view></view><view  class="service_row" bindtap="exit"><view class="service_icon"><image src="../image/exit.png"></image></view><view class="service_text">退出登录</view></view>
</view>
mypage.js代码:
// pages/mypage/mypage.js
var app = getApp();
const db = wx.cloud.database()
const {formatTime
} = require("../../utils/util.js")
Page({/*** 页面的初始数据*/data: {UserLogin: false,userInfo: null,Lv: '1'},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady: function () {},/*** 生命周期函数--监听页面显示*/onShow: function () {app.isLogin() // 全局变量this.setData({UserLogin: app.globalData.UserLogin,userInfo: app.globalData.userInfo})},//获取用户信息getUserProfile() {let openId = app.globalData.openid//console.log('全局的openid', openId)wx.getUserProfile({desc: '用于完善会员资料', //声明获取用户信息的用途success: (res) => {//console.log('点击获取用户信息成功', res.userInfo)let userInfo = res.userInfodb.collection('UserList').where({'_openid': openId}).get({success: res => {console.log('根据全局openid查询用户表成功', res.data)if (res.errMsg == "collection.get:ok" && res.data.length == 0) { //length等于0,证明没有该用户,走写入数据库//console.log('走if-1,开始写入数据库')db.collection('UserList') // 把用户信息写入数据库的用户表.add({data: {avatarUrl: userInfo.avatarUrl,nickName: userInfo.nickName,mamager: false,vip: false,Lv: 1,registerTime: formatTime(new Date())},success: res => {//console.log('写入成功', res.errMsg)if (res.errMsg == "collection.add:ok") {wx.setStorageSync('UserInfo', userInfo) //保存用户信息保存到本地缓存this.setData({userInfo: userInfo,UserLogin: true,Lv: "1"})wx.showToast({title: '恭喜,登录成功',icon: "success",duration: 1000,})} else {// 提示网络错误wx.showToast({title: '登录失败,请检查网络后重试!',icon: 'none',duration: 1000,})}},fail: err => {console.log('用户信息写入失败', err)// 提示网络错误wx.showToast({title: '登录失败,请检查网络后重试!',icon: 'none',duration: 1000,})}})} else {//console.log('走else-1,数据库里已存有用户信息,直接登录,不用写入数据库')wx.setStorageSync('UserInfo', userInfo) //保存用户信息保存到本地缓存this.setData({userInfo: userInfo,UserLogin: true,Lv: res.data[0].Lv})//更新全局状态app.globalData({userInfo: userInfo,UserLogin: true,})}},fail: err => {console.log('根据全局openid查询用户表失败', err)// 提示网络错误wx.showToast({title: '网络错误!获取授权信息失败',icon: 'none',duration: 1000,})}})},fail: err => {console.log('用户信息获取失败', err)// 提示网络错误wx.showToast({title: '网络错误!获取授权信息失败',icon: 'none',duration: 1000,})}})},// 跳转到我的收藏goMycollection() {let UserLogin = this.data.UserLoginif (UserLogin) {wx.navigateTo({url: '../collection/collection',})} else {// 提示登录wx.showToast({title: '你还未登录,请先登录!',icon: 'none',duration: 1000,})}},// 清除数据退出exit() {let UserLogin = this.data.UserLoginif (UserLogin) {wx.showToast({title: '退出成功',icon:'success',duration: 1000,})this.setData({UserLogin: false,})wx.removeStorageSync('UserInfo')} else {// 提示登录wx.showToast({title: '你还未登录,请先登录!',icon: 'none',duration: 1000,})}},
})
util.js
const formatTime = date => {const year = date.getFullYear()const month = date.getMonth() + 1const day = date.getDate()const hour = date.getHours()const minute = date.getMinutes()const second = date.getSeconds()return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
const formatNumber = n => {n = n.toString()return n[1] ? n : '0' + n
}module.exports = {formatTime: formatTime
}
app.js代码:
//app.js
App({onLaunch: function () {// 初始化云开发环境if (!wx.cloud) {//console.error('请使用 2.2.3 或以上的基础库以使用云能力')} else {wx.cloud.init({env: 'cloud1-3gklfre2aef67472',//云环境IDtraceUser: true,})}this.getOpenid();},globalData: {userInfo: null,UserLogin: false,openid:null,},// 获取用户openidgetOpenid: function () {var app = this;var openId = wx.getStorageSync('openId');if (openId) {//console.log('本地获取openid:', openId);app.globalData.openid = openId;app.isLogin();} else {wx.cloud.callFunction({name: 'getOpenid',success(res) {//console.log('云函数获取openid成功', res.result.openid)var openId = res.result.openid;wx.setStorageSync('openId', openId)app.globalData.openid = openId;app.isLogin();},fail(res) {console.log('云函数获取openid失败', res)}})}},//检测是否登录函数,未登录则提示登录isLogin() {//console.log('app.isLogin方法被执行了')var userInfo = wx.getStorageSync('UserInfo') // 获取缓存的用户信息if (userInfo.nickName && userInfo.avatarUrl) {this.globalData.UserLogin = truethis.globalData.userInfo = userInfo} else {this.globalData.UserLogin = false}},})
mypage.wxss代码:
/* pages/mypage/mypage.wxss *//* 背景图 */
.bg-box {width: 100%;height: 300rpx;z-index: 1;
}.bg-box image {z-index: 1;width: 100%;height: 100%;
}/* 登录 */
.login_box {height: 200rpx;margin: 10rpx 18rpx;border-radius: 16rpx;background-color: #fff;box-shadow: 20rpx 20rpx 10rpx rgba(39, 48, 57, 0.05);
}.userlogin {height: 100%;margin-left: 40rpx;float: left;display: flex;flex-direction: column;justify-content: center;
}.userAvatar_box {width: 150rpx;height: 150rpx;margin-top: 40rpx;margin-left: 20rpx;border-radius: 10rpx;overflow: hidden;float: left;
}.userAvatar_box image {width: 100%;height: 100%;
}/* 服务 */
.service_box {position: relative;margin: 10rpx 18rpx;border-radius: 16rpx;background-color: #fff;box-shadow: 20rpx 20rpx 10rpx rgba(39, 48, 57, 0.05);
}.service_title {height: 60rpx;line-height: 60rpx;padding-left: 10rpx;font-size: 16px;font-weight: bold;
}.service_row {height: 70rpx;margin-top: 16rpx;border-bottom: 2rpx #f0f0f0 solid;
}.service_icon {width: 50rpx;height: 50rpx;margin-left: 20rpx;margin-top: 10rpx;float: left;
}.service_icon image {width: 50rpx;height: 50rpx;
}.service_text {font-size: 14px;height: 70rpx;line-height: 70rpx;margin-left: 100rpx;
}

微信小程序授权登录视频教程
如果对你有用,别忘了一键三连呀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/62170.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序原生接入腾讯云im(单聊,列表,聊天界面,自定义消息,自动回复)

微信小程序原生接入腾讯云im&#xff08;单聊&#xff0c;列表&#xff0c;聊天界面&#xff0c;自定义消息&#xff0c;自动回复&#xff09; 发送图片语音消息传送→ 文章目录 1.项目需求 2.参考文档 3.效果图 4.初始化 集成SDK 5.登录 6.会话列表 7.聊天页面 8.遇到的问…

微信小程序接入腾讯云IM即时通讯(发送消息开发步骤)

微信小程序接入腾讯云IM即时通讯&#xff08;聊天窗口&#xff09; 1.效果图&#xff1a; 2.功能点 &#xff1a; 1.布局要分左右两边布局&#xff0c;如果是自己为发送消息方&#xff0c;都在右边&#xff0c;对方发送的消息在左边。 2.腾讯云返回的是时间戳&#xff0c;需…

uniapp小程序接入腾讯IM聊天

腾讯IM中创建项目 拿到AppID 与 密钥 下载demo 将debug 文件夹拖到自己项目中 在第一个js文件中填入自己项目的APPID 与密钥 下载&#xff08;tim-wx-sdk 上传文件 的依赖 看项目所需 import TIM from tim-wx-sdk; import TIMUploadPlugin from tim-upload-plugin; let optio…

用最通俗易懂的语言告诉你什么是信息熵

图和公式都挂了&#xff0c;想看原文的小伙伴去公众号后台回复”信息熵”即可 假设有个考试作弊团伙&#xff0c;需要连续不断地向外传递4选1单选题的答案。直接传递ABCD的ascii码的话&#xff0c;每个答案需要8个bit的二进制编码&#xff0c;从传输的角度&#xff0c;这显然有…

外景黑纱婚纱照高级感十足

婚纱照不止有自然小清新(&#xff06;还可以暗黑高级 看腻了千篇一律的白色婚纱礼服 炎追求个性、与众不同的仙女们不妨尝试一下黑色婚纱&#x1f5a4; 黑纱不一定只有酷和暗黑 也有法式赫本风的复古优雅 满满的氛围感和高级感 &#x1f3ac; 女生的拖尾黑裙神秘又优雅 …

福州一般拍一套婚纱照要多少钱

随着婚纱摄影行业发展以来&#xff0c;近几年选择婚纱照旅拍的准新人越来越多了。相信每一位新人对于这些都是第一次没有经验的&#xff0c;所以也不太清楚行情&#xff0c;不知道选择怎么样的套餐&#xff0c;那小编就来科普一下现在旅拍的行情&#xff0c;让你们在选择婚纱照…

晒一下我和老婆的婚纱照!

两人一起的 老婆单人的 老婆就是大名鼎鼎的晴天有雨啊&#xff01; 我单人的

冬天拍婚纱照注意事项 拍出养眼婚纱照

寒冷的冬天来了&#xff0c;对于北方人就要迎接雪花了&#xff0c;在寒冷的冬季进行婚纱摄影&#xff0c;会美丽但是也会“冻人”哦!下面 南京婚纱摄影工作室给大家介绍冬天拍婚纱照注意事项&#xff0c;准新人们可以参考一下哦! 冬天拍婚纱照注意事项 拍出养眼婚纱照 婚纱照 冬…

国内唯美花海 新娘绝美婚纱照

每位新郎都希望有一位仙女般的妻子&#xff0c;新娘也都希望自己是花丛中的花仙子。一组浪漫唯美的花海婚纱照无疑是诠释新人们花仙子梦的最好渠道。下面 青岛摄影工作室 就来给大家盘点一下国内那些唯美的花海。 1、云南罗平油菜花 云南省的罗平。从每年的二月份开始就进入了油…

W ndoWS十p啥意思,婚纱照相册10P是什么意思?入册多少张最合适?

原标题&#xff1a;婚纱照相册10P是什么意思&#xff1f;入册多少张最合适&#xff1f; 在预定婚纱照时&#xff0c;都会谈及相册P数&#xff0c;尺寸大小等等一些相册信息&#xff0c;一般相册的页数有7、10、12、15、20p还有30p的,而我们常见就为10P&#xff0c;那么&#xf…

婚纱照效果 取景很重要

新人们都希望可以有绝美的婚纱照&#xff0c;却又为自身没有绝对的优势而感到沮丧。其实漂亮的婚纱照通过选择适合景点选取一样可以拍出来。 婚纱照应该在选景的时候注意哪些问题&#xff0c;很多人渴望拥有类似杨幂结婚时一样的明星婚纱照&#xff0c;首先在选景的时候&#…

简约复古婚纱照拍摄攻略

当下拍婚纱照也要紧跟时尚潮流&#xff0c;当下拍婚纱照流行什么呢&#xff1f;简约、复古是当下婚纱照拍摄关键词。将时尚复古元素相结合也是当下最受年轻人亲睐的婚纱照拍摄形式&#xff0c;那么如何拍摄简约复古婚纱照呢&#xff1f;下面就跟无锡婚纱摄影一起来看看简约复古…

Photoshop透明婚纱照抠图处理

透明婚纱照抠图处理教程&#xff1a;先需要用钢笔等工具把人物部分抠出来包括婚纱部分。然后把抠出的人物图层复制一层&#xff0c;在通道选区婚纱部分较为清晰的通道并调出选区&#xff0c;回到图层面板后把选区反选按删除高光部分以外的图像&#xff0c;得到的图像就是我们抠…

九宫格摆法_九宫格婚纱照摆法图片与技巧

婚纱照挂法已不再是单一的排版&#xff0c;九宫格婚纱照开始逐渐流行在新人之中。下面来看看九宫格婚纱照摆法图片&#xff0c;以及九宫格婚纱照摆法的技巧。 一、九宫格婚纱照摆法 九宫格最常见的挂法就是方方正正的33的形式&#xff0c;当然除了九宫格的挂法之外&#xff0c;…

福州黑白风格的婚纱照拍摄介绍

新人们有没有想过在老一辈的婚纱照都是黑白的色彩但是一样能够拍摄出非常好的效果&#xff0c;新人们有没有想要试一试黑白风格的婚纱照呢&#xff0c;今天就让福州婚纱摄影价格最实惠的婚纱摄影工作室来和您说说吧&#xff01; 光源的选择   拍摄黑白风格的婚纱照&#xff…

java+springboot影楼婚纱照预约系统ssm

为了扩大影楼的生意&#xff0c;提高影楼的宣传形象&#xff0c;方便客户在线预约套系等&#xff0c;我们设计一款关于影楼的网站。设计婚纱照预约系统的目的是为实现客户与影楼预约&#xff0c;明细化工作人员分配、提高工作效率&#xff0c;节约时间及其他杂项成本。本系统基…

婚纱照选场地

婚纱照 内场1风格&#xff1a;复古风 内场2风格 :花场 内场3风格&#xff1a;酷酷的玩游戏机的 外场&#xff1a;马场&#xff08;马厩、吉普车、铁罐子、草堆&#xff09;

响应式织梦模板婚纱照摄影类网站

模板介绍&#xff1a; 织梦内核开发的模板&#xff0c;该模板属于企业通用类、婚纱摄影、艺术摄影类企业都可使用&#xff0c; 这款模板使用范围极广&#xff0c;不仅仅局限于一类型的企业&#xff0c;你只需要把图片和产品内容&#xff1b; 换成你的&#xff0c;颜色都可以修改…

PS调出春夏外景婚纱照

效果图 先来看看原图和夏季的效果图 先看看原图 教程终于来咯 原图暗部太深&#xff0c;需要将暗部提亮。可以把暗部选区选出来。为了精确选择暗部选区&#xff0c;我利用计算命令如上图所示。最后得到暗部的选区。 上图得到了暗部选区&#xff0c;添加曲线调整图层提亮如图&am…