视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
微信小程序的授权实现过程解析
2020-11-27 21:52:40 责编:小采
文档


自从小程序文档更新后,自动授权已不存在啦

目前的授权都是通过button来实现的,具体知识点可参考小程序的官方文档,以下是我做的一个小demo(进入首页,跳出一个登录弹出框,弹出框是自己写的一个UI组件),废话不多说,直接上代码

UI组件部分(modal)

modal.wxml

<view class='modal-mask' wx:if='{{show}}' bindtap='clickMask'>
 <view class='modal-content'>
 <scroll-view scroll-y class='main-content'>
 <slot></slot>
 </scroll-view>
 </view>
</view>

modal.wxss

n: fixed;
 left: 0;
 right: 0;
 top: 0;
 bottom: 0;
 background-color: rgba(0,0,0,0.5);
 z-index: 999;
}
/*遮罩内容*/
.modal-content{
 display: flex;
 flex-direction: column;
 width: 65%;
 background-color: #fff;
 border-radius: 10rpx;
 padding: 20rpx;
 text-align: center;
}
/*中间内容*/
.main-content{
 flex: 1;
 height: 100%;
 overflow-y: hidden; 
 max-height: 80vh; /* 内容高度最高80vh 以免内容太多溢出*/
}
.bottom {
 border-radius: 80rpx;
 margin: 70rpx 50rpx;
 font-size: 35rpx;
}

modal.js

Component({
 /**
 * 组件的属性列表
 */
 properties: {
 //是否显示modal弹窗
 show: {
 type: Boolean,
 value: false
 },
 //控制底部是一个按钮还是两个按钮,默认两个
 single: {
 type: Boolean,
 value: false
 }
 },

 /**
 * 组件的初始数据
 */
 data: {

 },

 /**
 * 组件的方法列表
 */
 methods: {
 // 点击modal的回调函数
 clickMask() {
 // 点击modal背景关闭遮罩层,如果不需要注释掉即可
 this.setData({ show: false })
 },
 // 点击取消按钮的回调函数
 cancel() {
 this.setData({ show: false })
 this.triggerEvent('cancel') //triggerEvent触发事件
 },
 // 点击确定按钮的回调函数
 confirm() {
 this.setData({ show: false })
 this.triggerEvent('confirm')
 }
 }
})

modal.json

{
 "component": true,
 "usingComponents": {}
}

pages页面

home.wxml(这个是弹框,home页面内容直接在下面加一个<view>这里写home页面的内容</view>)

<!-- modal弹窗-->
 <modalView show="{{showModal}}" bindcancel="modalCancel" bindconfirm='modalConfirm' single='{{single}}'>
 <view class='modal-content'>
 <scroll-view scroll-y class='main-content'>
 <view wx:if="{{canIUse}}" >
 <view class='header'>
 <text>提示</text>
 </view>
 <view class='content'>
 <image src="https://www.gxlcms.com/images/goods_img2.png"></image>
 <text>是否登录并继续使用该程序</text>
 </view>
 <view class="header_title">
 <text class="dian">•</text>
 <text>登录程序需进行微信授权</text>
 </view>
 <view class="modal_footer">
 <view class="bottom">
 <button class='bottom_a'>
 拒绝
 </button>
 <button class='bottom_b' open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="bindGetUserInfo">
 去登录
 </button>
 </view>
 </view>
</view>
 </scroll-view>
 </view>
 </modalView>

home.wxss

.header {
 text-align: start;
 height: 100rpx;
 line-height: 100rpx;
}
 
.header image {
 width: 200rpx;
 height: 200rpx;
}
 
.content {
 display: flex;
 margin-left: 50rpx;
 height: 100rpx;
 line-height: 100rpx;
}

.content image{
 width: 100rpx;
 height: 100rpx;
}
 
.content text {
 font-size: 24rpx;
 margin-left: 20rpx;
}
 
.header_title{
 margin-left: 50rpx;
 text-align: start;
 font-size: 24rpx;
 color: #ccc;
 line-height: 100rpx;
 display: flex;
}

.dian{
 margin-right: 6rpx;
 font-size: 36rpx;
}

.modal_footer{
 display: flex;
 justify-content: flex-end;
}
.bottom {
 display: flex;
 color: #ccc;
 font-size: 24rpx;
 width: 280rpx;
}

button::after {
 border: none;
}

.bottom button{
 background-color: #fff;
 height: 50rpx;
 line-height: 50rpx;
}

.bottom_a{
 font-size: 24rpx;
}
.bottom_b{
 font-size: 28rpx;
 color: #0db95a;
}

home.js

//home.js
//获取应用实例
const app = getApp()

Page({
 data: {
 canIUse: wx.canIUse('button.open-type.getUserInfo'),
 showModal: true, 
 single: false
 },
 onLoad:function(){
 var that = this;
 // 查看是否授权
 wx.getSetting({
 success: function (res) {
 if (res.authSetting['scope.userInfo']) {
 wx.getUserInfo({
 success: function (res) {
 wx.login({
 success: res => {
 console.log("用户的code:" + res.code);
 }
 });
 }
 });
 } else {
 that.setData({
 showModal: true
 });
 }
 }
 });
 },
 bindGetUserInfo: function (e) {
 if (e.detail.userInfo) {
 //用户按了允许授权按钮
 var that = this;
 // 获取到用户的信息了,打印到控制台上看下
 console.log("用户的信息如下:");
 console.log(e.detail.userInfo);
 //授权成功后,通过改变 showModal的值,让实现页面显示出来,把授权页面隐藏起来
 that.setData({
 showModal: false
 });
 } else {
 var that = this;
 //用户按了拒绝按钮
 wx.showModal({
 title: '警告',
 content: '您点击了拒绝授权,将无法获取你的信息!!!',
 showCancel: false,
 confirmText: '返回授权',
 success: function (res) {
 // 用户没有授权成功,不需要改变 isHide 的值
 if (res.confirm) {
 that.setData({
 showModal: true
 });
 }
 }
 });
 }
 }
})

home.json

{
 "usingComponents": {
 "modalView": "../../components/modal/modal"
 }
}

好啦~这是全部代码,效果如下(点击登录可进行授权)

下载本文
显示全文
专题