微信小程序实现授权登录


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 相关文章推荐
prototype 1.5相关知识及他人笔记
Dec 16 Javascript
用javascript实现无刷新更新数据的详细步骤 asp
Dec 26 Javascript
JSON语法五大要素图文介绍
Dec 04 Javascript
JavaScript调用后台的三种方法实例
Oct 17 Javascript
jquery 模板的应用示例
Nov 12 Javascript
JavaScript将数字转换成大写中文的方法
Mar 23 Javascript
超详细的javascript数组方法汇总
Nov 21 Javascript
ES6中如何使用Set和WeakSet
Mar 10 Javascript
微信小程序 小程序制作及动画(animation样式)详解
Jan 06 Javascript
js中的触发事件对象event.srcElement与event.target详解
Mar 15 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
Sep 09 Javascript
微信小程序如何获取用户头像和昵称
Sep 23 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
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
My Desktop :) 桌面式代码
2008/12/29 Javascript
jQuery 第二课 操作包装集元素代码
2010/03/14 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
JavaScript实现页面5秒后自动跳转的方法
2015/04/16 Javascript
详解JavaScript中shift()方法的使用
2015/06/09 Javascript
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
JS添加或修改控件的样式(Class)实现方法
2016/10/15 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
VUE实现一个分页组件的示例
2017/09/13 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
通过vue-cli3构建一个SSR应用程序的方法
2018/09/13 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
2019/10/31 Javascript
Python getopt模块处理命令行选项实例
2014/05/13 Python
基于Python log 的正确打开方式
2018/04/28 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
2018/12/18 Python
python numpy数组中的复制知识解析
2020/02/03 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
详解CSS3浏览器兼容
2016/12/14 HTML / CSS
一套软件开发工程师笔试题
2015/05/18 面试题
气象学专业个人求职信
2014/03/15 职场文书
小班幼儿评语大全
2014/04/30 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
简历上的自我评价,该怎么写呢?
2019/06/13 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书