前言:由于微信官方修改了getUserInfo、authorize接口,无法弹出授权窗口,所以现在无法实现一进入微信小程序就弹出授权窗口,只能通过button去触发
1.实现思路微信授权登录仅适用于使用微信用户信息的用户,如果自己的项目有完善的用户信息(一套式开发项目),可不使用微信用户信息;如果仅为微信小程序,则要授权、获取用户信息
自己写一个微信授权登录页面让用户实现点击的功能,也就是实现了通过button组件去触发getUserInof接口。在用户进入微信小程序的时候,判断用户是否授权了,如果没有授权的话就显示下面“界面简介”的第一个图,让用户去执行授权的操作。如果已经授权了,则直接跳过这个页面,进入首页。
2.界面简介3.源码authorize.html
viewwx:if="{{canIUse}}"viewclass='header'imagesrc='/images/wx_login.png'/image/viewviewclass='content'view申请获取以下权限/viewtext获得你的公开信息(昵称,头像等)/text/viewbuttonclass='bottom'type='primary'open-type="getUserInfo"lang="zh_CN"bindgetuserinfo="bindGetUserInfo"授权登录/button/viewviewwx:else请升级微信版本/viewauthorize.wxss
.header{margin:90rpx090rpx50rpx;text-align:center;width:650rpx;height:300rpx;line-height:450rpx;}.headerimage{width:200rpx;height:200rpx;}.content{margin-left:50rpx;margin-bottom:90rpx;}.contenttext{display:block;color:#9d9d9d;margin-top:40rpx;}.bottom{border-radius:80rpx;margin:70rpx50rpx;font-size:35rpx;}authorize.json
{"navigationBarTitleText":"授权登录"}authorize.js
constapp=getApp();Page({data:{//判断小程序的API,回调,参数,组件等是否在当前版本可用。canIUse:wx.canIUse('button.open-type.getUserInfo')},onLoad:function(){varthat=this;//查看是否授权wx.getSetting({success:function(res){if(res.authSetting['scope.userInfo']){wx.getUserInfo({success:function(res){//从数据库获取用户信息that.queryUsreInfo();//用户已经授权过wx.switchTab({url:'/pages/index/index'})}});}}})},bindGetUserInfo:function(e){if(e.detail.userInfo){//用户按了允许授权按钮varthat=this;//插入登录的用户的相关信息到数据库wx.request({url:app.globalData.urlPath+'user/add',data:{openid:getApp().globalData.openid,nickName:e.detail.userInfo.nickName,avatarUrl:e.detail.userInfo.avatarUrl,province:e.detail.userInfo.province,city:e.detail.userInfo.city},header:{'content-type':'application/json'},success:function(res){//从数据库获取用户信息that.queryUsreInfo();console.log("插入小程序登录用户信息成功!");}});//授权成功后,跳转进入小程序首页wx.switchTab({url:'/pages/index/index'})}else{//用户按了拒绝按钮wx.showModal({title:'警告',content:'您点击了拒绝授权,将无法进入小程序,请授权之后再进入!!!',showCancel:false,confirmText:'返回授权',success:function(res){if(res.confirm){console.log('用户点击了“返回授权”')}}})}},//获取用户信息接口queryUsreInfo:function(){wx.request({url:app.globalData.urlPath+'user/userInfo',data:{openid:app.globalData.openid},header:{'content-type':'application/json'},success:function(res){console.log(res.data);getApp().globalData.userInfo=res.data;}});},})代码的wx.request是小程序发起网络请求,用于用户与数据的交互。官网地址:https://developers.weixin.qq.com/miniprogram/dev/api/network-request.htmlURL分析:app.globalData.urlPath(全局url;例如:https://www.baidu.com)user/userInfo(接口具体地址)
小程序源码地址:https://github.com/cuigeg/wxchat.git
拓展安利一下,微信小程序什么情况下需要授权:授权代码:
注意:wx.authorize({scope:“scope.userInfo”}),无法弹出授权窗口,请使用buttonopen-type="getUserInfo"/button
wx.getSetting({success(res){if(!res.authSetting['scope.record']){wx.authorize({scope:'scope.record',success(){//用户已经同意小程序使用录音功能,后续调用wx.startRecord接口不会弹窗询问wx.startRecord()}})}}})如果此篇博客对您或者您的朋友有帮助,请予以收藏或者转发,感谢您的查看,始终信仰:每一次分享都会帮助一些采坑中的道友,爱分享,能让道友时候踩一个坑是我们的幸福,如果有什么不对的地方,请于评论区提示,及时发现问题解决问题会让我们进步更快,谢谢参考文章地址:https://blog.csdn.net/weidong_y/article/details/79636386













