目录

自定义授权页面

点击授权登录后出现微信自带的授权登录弹窗

<!--index.wxml-->

<!-- 授权界面 -->
<cover-view class='auth_wrap' wx:if="{{hasUserInfo && canIUse}}">
<cover-view class='con'>
<cover-image class='logo' mode="widthFix" src='../../assets/mrys_logo.png'>
</cover-image>
<cover-view class='txt'>XXXXXX小程序申请一下权限:</cover-view>
<cover-view class='txt'>获取你的公开信息(头像和昵称等)</cover-view>
<button class='btn' type='primary' open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 授权登录 </button>
</cover-view>
</cover-view>
//app.js
App({
onLaunch: function () {
},
globalData: {
'hasUserInfo':false,
'code': null,
'userInfo': null
}
})
//index.js
const app = getApp();
Page({
data: {
userInfo: {},
hasUserInfo: false,//未授权不显示
canIUse: wx.canIUse('button.open-type.getUserInfo')//判断小程序的API,回调,参数,组件等是否在当前版本可用。
},
onLoad: function () {
var self=this;
// 获取用户信息
wx.getSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
wx.getUserInfo({
success: res => {
// 可以将 res 发送给后台解码出 unionId
app.globalData.userInfo = res.userInfo
// console.log(app.globalData.userInfo);
// 登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
getApp().globalData.code = res.code;
console.log(getApp().globalData.code);
wx.request({
url: 'https:xxxxxxxxxxxxxxxxxxxxxx',
data: {
'code': getApp().globalData.code,
},
method: 'POST',
success: function (res) {
console.log(res);
getApp().globalData.uid = res.data.data.uid;
console.log('uid====',getApp().globalData.uid);
}
})
 
}
})
}
})
} else {
// 用户没有授权
// 改变 hasUserInfo 的值,显示授权页面
self.setData({
hasUserInfo:true
});
}
}
})
},
getUserInfo: function (e) {
if (e.detail.userInfo) {
console.log(e.detail.userInfo);
//用户按了允许授权按钮
var self = this;
//授权成功后,通过改变 hasUserInfo 的值,让实现页面显示出来,把授权页面隐藏起来
self.setData({
userInfo: e.detail.userInfo,
hasUserInfo: false
});
 
} else {
//用户按了拒绝按钮
wx.showModal({
title: '警告',
content: '您点击了拒绝授权,将无法进入小程序,请授权之后再进入!!!',
showCancel: false,
confirmText: '返回授权',
success: function (res) {
// 用户没有授权成功,不需要改变 isHide 的值
if (res.confirm) {
console.log('用户点击了“返回授权”');
}
}
});
}
},

微信小程序授权登录的更多相关文章

  1. 完整微信小程序授权登录页面教程

    完整微信小程序授权登录页面教程 1.前言 微信官方对getUserInfo接口做了修改,授权窗口无法直接弹出,而取而代之是需要创建一个button,将其open-type属性绑定getUseInfo方 ...

  2. uni-app开发经验分享二十: 微信小程序 授权登录 获取详细信息 获取手机号

    授权页面 因为微信小程序提供的 权限弹窗 只能通用户确认授权 所以可以 写一个授权页面,让用户点击 来获取用户相关信息 然后再配合后台就可以完成登录 <button class="bt ...

  3. uni-app 微信小程序授权登录

    1.微信小程序 获取用户信息 与获取手机号 详细信息看官方公告:https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce8 ...

  4. 微信小程序授权登录将open_id传至后台并入库

    要求能把用户昵称.头像以及open_id写入数据库,服务端保持用户登录状态 wxml: <block wx:else> <button type="primary" ...

  5. 微信小程序授权登录以及用户信息相关接口调整导致授权框不弹出

    前言:4月8号升级了小程序业务后提交了版本并上线.突然一个同事说体验版的点击"登录"按钮无效.当时觉得应该不会呀,这几天一直用手机调试,每天也在不停的登录授权,弹框一直有的呀.然后 ...

  6. 微信小程序授权登录--PHP后端接口

    由于之前做过公众号的一个开发,所以再开发小程序就没有那么多坑了,在这也记录一下开发过程,以方便后续进行参考. 废话不多说,直接上官方文档,任何使用第三方开发的,不看文档就是耍流氓.小程序开发文档,可以 ...

  7. 微信小程序获取登录手机号

    小程序获取登录用户手机号. 因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 <button> 组件的点击来触发. 首先,放置一个 button 按钮,将 ...

  8. php(ThinkPHP)实现微信小程序的登录过程

    源码也在我的github中给出 https://github.com/wulongtao/think-wxminihelper 下面结合thinkPHP框架来实现以下微信小程序的登录流程,这些流程是结 ...

  9. 使用Shiro+JWT完成的微信小程序的登录(含讲解)

    使用Shiro+JWT完成的微信小程序的登录 源码地址https://github.com/Jirath-Liu/shiro-jwt-wx 微信小程序用户登陆,完整流程可参考下面官方地址,本例中是按此 ...

随机推荐

  1. java基础(二):谈谈Java基本数据结构

    数据结构是计算机存储,组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或存储效率.数据结构往往同高效的检索算法和索引技术有关 ...

  2. 48.Odoo产品分析 (五) – 定制板块(3) – 修改文件和报告(1)

    查看Odoo产品分析系列--目录 不管ERP系统中的内置报表有多完善,大多数的公司仍然需要对文档和报表进行一些自定义的修改.  这一章节将介绍如何对报表的页眉和页脚做自定义修改:odoo框架如何组织报 ...

  3. Python 基于Python结合pykafka实现kafka生产及消费速率&主题分区偏移实时监控

    基于Python结合pykafka实现kafka生产及消费速率&主题分区偏移实时监控   By: 授客 QQ:1033553122   1.测试环境 python 3.4 zookeeper- ...

  4. Android视频录制从不入门到入门系列教程(三)————视频方向

    运行Android视频录制从不入门到入门系列教程(二)————显示视频图像中的Demo后,我们应该能发现视频的方向是错误的. 由于Android中,Camera给我们的视频图片的原始方向是下图这个样子 ...

  5. Git 安装 on centos7

    本文演示如何在CentOS7上安装和使用git. 1 准备工作 1.1 浏览器访问安装包下载地址: https://www.kernel.org/pub/software/scm/git/ 找到下载列 ...

  6. django apscheduler在特定时间执行一次任务(run at a specify time only once)

      如何使程序在特定时间只执行一次,我查了一下. celery可以,时间以秒计. task = mytask.apply_async(args=[10, 20], countdown=60) 不过,我 ...

  7. vue的生命周期的理解

    Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.销毁等一系列过程,我们称这是Vue的生命周期.通俗说就是Vue实例从创建到销毁的过程,就是生命周期 ...

  8. Keepalibed监控nginx

    配置Keepalived监控nginx --wang 目的: 通过Keepalived实现对nginx的监控,每两秒扫描一次,如果nginx关闭,尝试重启nginx,两秒后检查nginx是否启动,如果 ...

  9. SqlServer无备份下误删数据恢复

    系统已上线,给客户修改bug的时候,使用delete语句删表数据,没想到库没切换成测试库.误删了正式库的数据,而且一次备份都没有做过,玩大了 不扯了,进入主题 网上很多方法,都是针对至少有一次备份的情 ...

  10. 英语-TOEFL和GRE复习计划与资料

    目录 一. TOEFL (1). 阅读: 60 minutes (2). 听力: 50 minutes (3). 口语: 20 minutes (4). 作文: 60 minutes 单词准备 其他资 ...