微信小程序实现授权登录


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 相关文章推荐
HTML页面如何象ASP一样接受参数
Feb 07 Javascript
JS俄罗斯方块,包含完整的设计理念
Dec 11 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
Oct 14 Javascript
javascript中的window.location.search方法简介
Sep 02 Javascript
JS获取计算机mac地址以及IP的实现方法
Jan 08 Javascript
js使用正则实现ReplaceAll全部替换的方法
Aug 22 Javascript
jQuery实现表单步骤流程导航代码分享
Aug 28 Javascript
浅析Jquery操作select
Dec 13 Javascript
JavaScript事件冒泡与事件捕获实例分析
Aug 01 Javascript
Vue项目引发的「过滤器」使用教程
Mar 12 Javascript
基于elementUI实现图片预览组件的示例代码
Mar 31 Javascript
解决layUI的页面显示不全的问题
Sep 20 Javascript
基于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 301转向实现代码
2008/09/18 PHP
php MYSQL 数据备份类
2009/06/19 PHP
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
thinkphp控制器调度使用示例
2014/02/24 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
PHP文件操作方法汇总
2015/07/01 PHP
javascript读取xml
2006/11/04 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
js实现全选和全不选
2020/07/28 Javascript
Js跳出两级循环方法代码实例
2020/09/22 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
Python的Django框架使用入门指引
2015/04/15 Python
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
食品行业求职人的自我评价
2014/01/19 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
小学生暑假家长评语
2014/04/17 职场文书
村创先争优活动总结
2014/08/28 职场文书
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
浅谈Python响应式类库RxPy
2021/06/14 Python
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫