微信小程序实现授权登录


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 document.execCommand() 常用解析
Dec 14 Javascript
js Function类型
Dec 04 Javascript
JSF中confirm弹出框的用法示例介绍
Jan 07 Javascript
JS控制网页动态生成任意行列数表格的方法
Mar 09 Javascript
JavaScript实现模仿桌面窗口的方法
Jul 18 Javascript
JavaScrpt判断一个数是否是质数的实例代码
Jun 11 Javascript
JS与HTML结合实现流程进度展示条思路详解
Sep 03 Javascript
解决vue v-for 遍历循环时key值报错的问题
Sep 06 Javascript
javascript中join方法实例讲解
Feb 21 Javascript
Vue 实现一个命令式弹窗组件功能
Sep 25 Javascript
使用kbone解决Vue项目同时支持小程序问题
Nov 08 Javascript
jQuery实现滑动星星评分效果(每日分享)
Nov 13 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中使用正则表达式进行查找替换
2013/06/13 PHP
生成随机字符串和验证码的类的PHP实例
2013/12/24 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
jQuery 性能优化指南(3)
2009/05/21 Javascript
模拟select的代码
2011/10/19 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
JS实现图片放大镜效果的方法
2015/02/27 Javascript
JS实现FLASH幻灯片图片切换效果的方法
2015/03/04 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
vue写h5页面的方法总结
2019/02/12 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
Python pandas库中的isnull()详解
2019/12/26 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
美国美发品牌:Bumble and Bumble
2016/10/08 全球购物
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
搞笑创意广告语
2014/03/17 职场文书
安全环保标语
2014/06/09 职场文书
幼儿生日活动方案
2014/08/27 职场文书
初婚初育证明范本
2014/11/24 职场文书
悬空寺导游词
2015/02/05 职场文书
创业计划书之餐饮馄饨店
2019/07/18 职场文书
SpringBoot快速入门详解
2021/07/21 Java/Android