微信小程序实现授权登录


Posted in Javascript onMay 15, 2019

前言:由于微信官方修改了 getUserInfo 接口,所以现在无法实现一进入微信小程序就弹出授权窗口,只能通过 button 去触发。官方连接:点击打开链接

1.实现思路

自己写一个微信授权登录页面让用户实现点击的功能,也就是实现了通过 button 组件去触发 getUserInof 接口。在用户进入微信小程序的时候,判断用户是否授权了,如果没有授权的话就显示下面“界面简介”的第一个图,让用户去执行授权的操作。如果已经授权了,则直接跳过这个页面,进入首页。

2.界面简介

微信小程序实现授权登录微信小程序实现授权登录

3.源码

login.wxml

<view wx:if="{{canIUse}}">
 <view class='header'>
  <image src='/images/wx_login.png'></image>
 </view>
 
 <view class='content'>
  <view>申请获取以下权限</view>
  <text>获得你的公开信息(昵称,头像等)</text>
 </view>
 
 <button class='bottom' type='primary' open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="bindGetUserInfo">
  授权登录
 </button>
</view>
 
<view wx:else>请升级微信版本</view>

login.wcss

.header {
 margin: 90rpx 0 90rpx 50rpx;
 border-bottom: 1px solid #ccc;
 text-align: center;
 width: 650rpx;
 height: 300rpx;
 line-height: 450rpx;
}
 
.header image {
 width: 200rpx;
 height: 200rpx;
}
 
.content {
 margin-left: 50rpx;
 margin-bottom: 90rpx;
}
 
.content text {
 display: block;
 color: #9d9d9d;
 margin-top: 40rpx;
}
 
.bottom {
 border-radius: 80rpx;
 margin: 70rpx 50rpx;
 font-size: 35rpx;
}

login.json

{
 
"navigationBarTitleText": "授权登录"
 
}

login.js

代码的 wx.request 是我项目与后台的一些交互,可直接删除掉。

需要修改的地方:

记得自己补上 wx.switchTab 接口中的 url 属性,这是授权成功后跳转的页面路径,由于我的首页是 tarBar 页面,所以这里用wx.switchTab ,如果不是 tarBar 页面的话,可以用 wx.navigateTo 和 wx.redirecTo 去跳转

Page({
 data: {
  //判断小程序的API,回调,参数,组件等是否在当前版本可用。
  canIUse: wx.canIUse('button.open-type.getUserInfo')
 },
 onLoad: function () {
  var that = this;
  // 查看是否授权
  wx.getSetting({
   success: function (res) {
    if (res.authSetting['scope.userInfo']) {
     wx.getUserInfo({
      success: function (res) {
       //从数据库获取用户信息
       that.queryUsreInfo();
       //用户已经授权过
       wx.switchTab({
        url: ''
       })
      }
     });
    }
   }
  })
 },
 bindGetUserInfo: function (e) {
  if (e.detail.userInfo) {
   //用户按了允许授权按钮
   var that = this;
   //插入登录的用户的相关信息到数据库
   wx.request({
    url: getApp().globalData.urlPath + 'hstc_interface/insert_user',
    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: '' 
   })
  } else {
   //用户按了拒绝按钮
   wx.showModal({
    title:'警告',
    content:'您点击了拒绝授权,将无法进入小程序,请授权之后再进入!!!',
    showCancel:false,
    confirmText:'返回授权',
    success:function(res){
     if (res.confirm) {
      console.log('用户点击了“返回授权”')
     } 
    }
   })
  }
 },
 //获取用户信息接口
 queryUsreInfo: function () {
  wx.request({
   url: getApp().globalData.urlPath + 'hstc_interface/queryByOpenid',
   data: {
    openid: getApp().globalData.openid
   },
   header: {
    'content-type': 'application/json'
   },
   success: function (res) {
    console.log(res.data);
    getApp().globalData.userInfo = res.data;
   }
  });
 },
 
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript RadioButtonList获取选中值
Apr 09 Javascript
javascript arguments 传递给函数的隐含参数
Aug 21 Javascript
extjs表格文本启用选择复制功能具体实现
Oct 11 Javascript
Js表格万条数据瞬间加载实现代码
Feb 20 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
Apr 20 Javascript
使用impress.js制作幻灯片
Sep 09 Javascript
分享自己用JS做的扫雷小游戏
Feb 17 Javascript
angularjs封装bootstrap时间插件datetimepicker
Jun 20 Javascript
react.js CMS 删除功能的实现方法
Apr 17 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
Sep 25 Javascript
详解vue的diff算法原理
May 20 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
Jun 12 jQuery
基于vue实现一个神奇的动态按钮效果
May 15 #Javascript
微信小程序导航栏跟随滑动效果的实现代码
May 14 #Javascript
详解VSCode配置启动Vue项目
May 14 #Javascript
微信小程序下拉菜单效果的实例代码
May 14 #Javascript
jquery+css实现Tab栏切换的代码实例
May 14 #jQuery
jquery实现二级导航下拉菜单效果实例
May 14 #jQuery
js纯前端实现腾讯cos文件上传功能的示例代码
May 14 #Javascript
You might like
社区(php&amp;&amp;mysql)三
2006/10/09 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
js表数据排序 sort table data
2009/02/18 Javascript
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
JsRender实用入门教程
2014/10/31 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
vue.js中导出Excel表格的案例分析
2019/06/11 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
Python使用装饰器进行django开发实例代码
2018/02/06 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
python实现DEM数据的阴影生成的方法
2019/07/23 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
英国羊绒服装购物网站:Pure Collection
2018/10/22 全球购物
小学毕业感言500字
2014/02/28 职场文书
财产公证书
2014/04/10 职场文书
市场开发计划书
2014/05/07 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
土木工程求职信
2014/05/29 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
Python使用永中文档转换服务
2022/05/06 Python