微信小程序实现授权登录


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 相关文章推荐
js中confirm实现执行操作前弹出确认框的方法
Nov 01 Javascript
JQuery动画与特效实例分析
Feb 02 Javascript
JS实现超简单的汉字转拼音功能示例
Dec 22 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
Apr 29 jQuery
jQuery模拟实现天猫购物车动画效果实例代码
May 25 jQuery
jQuery中extend函数简单用法示例
Oct 11 jQuery
webstorm添加*.vue文件支持
May 08 Javascript
详解Angular6学习笔记之主从组件
Sep 05 Javascript
详解@angular/cli 改变默认启动端口两种方式
Nov 29 Javascript
Node.js实现一个HTTP服务器的方法示例
May 13 Javascript
详解使用JWT实现单点登录(完全跨域方案)
Aug 02 Javascript
微信小程序地图绘制线段并且测量(实例代码)
Jan 02 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原创论坛
2006/10/09 PHP
用PHP将数据导入到Foxmail
2006/10/09 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
javascript EXCEL 操作类代码
2009/07/30 Javascript
JS实现商品倒计时实现代码
2013/05/03 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
Vue单文件组件的如何使用方式介绍
2017/07/28 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
使用D3.js构建实时图形的示例代码
2018/08/28 Javascript
vue 之 css module的使用方法
2018/12/04 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
小程序中的箭头函数的具体使用
2020/06/19 Javascript
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
python中星号变量的几种特殊用法
2016/09/07 Python
Python遍历pandas数据方法总结
2018/02/09 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
python matplotlib库直方图绘制详解
2019/08/10 Python
Pycharm 2020年最新激活码(亲测有效)
2020/09/18 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
2020/02/11 Python
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
西班牙在线宠物食品和配件商店:bitiba
2019/10/11 全球购物
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
个人作风剖析材料
2014/02/02 职场文书
部门年终奖分配方案
2014/05/07 职场文书
分析Java中Map的遍历性能问题
2021/06/26 Java/Android