一、auth.js

  • const configGlobal = require('../config/config_global.js');
  • var util = require('function.js');
  • var http = require('http.js');
  • var app = getApp();
  • var authHandler ={
  • success:function(res){},
  • fail:function(res){},
  • complete:function(res){},
  • };
  • /*
  • * 得到保存的SESSION
  • */
  • function getSession(){
  • var session =null;
  • try{
  • session = wx.getStorageSync('session');
  • if(session){
  • wx.checkSession({
  • success:function(res){
  • setAppGlobalData(session);
  • },
  • fail:function(res){
  • session =null;
  • setAppGlobalData(session);
  • }
  • });
  • }else{
  • session =null;
  • setAppGlobalData(session);
  • }
  • }catch(e){}
  • return session;
  • };
  • /**
  • * [putLoginLog description]--记录登录日志
  • * @return {[type]} [description]
  • */
  • function putLoginLog(){
  • http.POST({
  • url:'/_WxaappApiServer/putLoginLog',
  • data:{
  • openId: app.globalData.openId,
  • },
  • success:function(res){
  • if(res.data.code =='0'){}else{}
  • },
  • fail:function(res){ console.log('request失败,res:', res);},
  • complete:function(res){}
  • });
  • };
  • function setAppGlobalData(session){
  • app.globalData.openId = session.openId;
  • app.globalData.unionid = session.unionid;
  • app.globalData._3rd_session = session._3rd_session;
  • app.globalData.userInfo = session.userInfo;
  • };
  • function getUserInfo(authHandler){
  • // 调用登录接口
  • wx.login({
  • success:function(res){
  • var code = res.code;
  • wx.getUserInfo({
  • lang:'zh_CN',
  • success:function(res){
  • http.POST({
  • url:'/_WxaappApiServer/getUserInfo',
  • data:{
  • code: code,
  • iv: res.iv,
  • encryptedData: res.encryptedData,
  • },
  • success:function(res){
  • //对userInfo重新赋值
  • if(res.data.code =="0"){
  • var session = res.data.data;
  • try{
  • wx.setStorageSync('session', session);
  • setAppGlobalData(session);
  • authHandler.success();
  • }catch(e){}
  • }else{}
  • },
  • fail:function(res){ console.log('request失败,res:', res);},
  • complete:function(res){}
  • });
  • },
  • fail:function(res){
  • openSettingUserInfo(authHandler);
  • },
  • complete:function(res){},
  • })
  • },
  • fail:function(res){
  • console.log("登录失败!");
  • },
  • complete:function(res){},
  • });
  • };
  • function openSettingUserInfo(authHandler){
  • wx.getSetting({
  • success(res){
  • if(!res.authSetting['scope.userInfo']){
  • wx.showModal({
  • title:'',
  • content:'请先完成授权!在设置页面中勾选“用户信息”选项,否则部分功能将受限。',
  • showCancel:true,
  • confirmText:'前去设置',
  • confirmColor:'#004b97',
  • success:function(res){
  • if(res.confirm){
  • wx.openSetting({
  • success:(res)=>{
  • res.authSetting ={
  • 'scope.userInfo':true,
  • };
  • // authHandler.success();
  • },
  • complete:function(res){
  • openSettingUserInfo(authHandler);
  • },
  • })
  • }
  • if(res.cancel){
  • authHandler.fail();
  • // 注释上一行,启用下面这一行,就是强制用户授权
  • // openSettingUserInfo(authHandler); //强制授权
  • }
  • if(!res.confirm &&!res.cancel){
  • openSettingUserInfo(authHandler);
  • }
  • }
  • });
  • }else{
  • getUserInfo(authHandler);
  • }
  • }
  • })
  • };
  • /**
  • * 授权--用户登录
  • * @param  {[type]} authHandler [description]
  • * @return {[type]}                [description]
  • */
  • function userInfo(authHandler){
  • var session =null;
  • try{
  • session = wx.getStorageSync('session');
  • if(session){
  • wx.checkSession({
  • success:function(){
  • setAppGlobalData(session);
  • authHandler.success();
  • },
  • fail:function(){
  • session =null;
  • getUserInfo(authHandler);
  • }
  • });
  • }else{
  • session =null;
  • getUserInfo(authHandler);
  • }
  • }catch(e){
  • authHandler.fail();
  • }
  • return session;
  • }
  • /**
  • * 授权--地理位置 wx.getLocation, wx.chooseLocation
  • * @param  {[type]} authHandler [description]
  • * @return {[type]}             [description]
  • */
  • function userLocation(authHandler){
  • wx.getSetting({
  • success(res){
  • if(!res.authSetting['scope.userLocation']){
  • wx.authorize({
  • scope:'scope.userLocation',
  • success(){},
  • complete(){
  • openSetting_userLocation(authHandler)
  • }
  • })
  • }else{
  • authHandler.success();
  • }
  • }
  • })
  • };
  • function openSetting_userLocation(authHandler){
  • wx.getSetting({
  • success(res){
  • if(!res.authSetting['scope.userLocation']){
  • wx.showModal({
  • title:'',
  • content:'请先完成授权!在设置页面中勾选“地理位置”选项,否则部分功能将受限。',
  • showCancel:true,
  • confirmText:'前去设置',
  • confirmColor:'#004b97',
  • success:function(res){
  • if(res.confirm){
  • wx.openSetting({
  • success:(res)=>{
  • res.authSetting ={
  • 'scope.userLocation':true,
  • };
  • },
  • complete:function(res){
  • openSetting_userLocation(authHandler);
  • },
  • })
  • }
  • if(res.cancel){
  • authHandler.fail();
  • // 注释上一行,启用下面这一行,就是强制用户授权
  • // openSetting_userLocation(authHandler); //强制授权
  • }
  • if(!res.confirm &&!res.cancel){
  • openSetting_userLocation(authHandler);
  • }
  • }
  • });
  • }else{
  • userLocation(authHandler);
  • }
  • }
  • })
  • };
  • /**
  • * 授权--通讯地址 wx.chooseAddress
  • * @param  {[type]} authHandler [description]
  • * @return {[type]}             [description]
  • */
  • function address(authHandler){
  • wx.getSetting({
  • success(res){
  • if(!res.authSetting['scope.address']){
  • wx.authorize({
  • scope:'scope.address',
  • success(){},
  • complete(){
  • openSetting_address(authHandler)
  • }
  • })
  • }else{
  • authHandler.success();
  • }
  • }
  • })
  • };
  • function openSetting_address(authHandler){
  • wx.getSetting({
  • success(res){
  • if(!res.authSetting['scope.address']){
  • wx.showModal({
  • title:'',
  • content:'请先完成授权!在设置页面中勾选“通讯地址”选项,否则部分功能将受限。',
  • showCancel:true,
  • confirmText:'前去设置',
  • confirmColor:'#004b97',
  • success:function(res){
  • if(res.confirm){
  • wx.openSetting({
  • success:(res)=>{
  • res.authSetting ={
  • 'scope.address':true,
  • };
  • },
  • complete:function(res){
  • openSetting_address(authHandler);
  • },
  • })
  • }
  • if(res.cancel){
  • authHandler.fail();
  • // 注释上一行,启用下面这一行,就是强制用户授权
  • // openSetting_address(authHandler); //强制授权
  • }
  • if(!res.confirm &&!res.cancel){
  • openSetting_address(authHandler);
  • }
  • }
  • });
  • }else{
  • address(authHandler);
  • }
  • }
  • })
  • };
  • /**
  • * 授权--发票抬头 wx.chooseInvoiceTitle
  • * @param  {[type]} authHandler [description]
  • * @return {[type]}             [description]
  • */
  • function invoiceTitle(authHandler){
  • wx.getSetting({
  • success(res){
  • if(!res.authSetting['scope.invoiceTitle']){
  • wx.authorize({
  • scope:'scope.invoiceTitle',
  • success(){},
  • complete(){
  • openSetting_invoiceTitle(authHandler)
  • }
  • })
  • }else{
  • authHandler.success();
  • }
  • }
  • })
  • };
  • function openSetting_invoiceTitle(authHandler){
  • wx.getSetting({
  • success(res){
  • if(!res.authSetting['scope.invoiceTitle']){
  • wx.showModal({
  • title:'',
  • content:'请先完成授权!在设置页面中勾选“发票抬头”选项,否则部分功能将受限。',
  • showCancel:true,
  • confirmText:'前去设置',
  • confirmColor:'#004b97',
  • success:function(res){
  • if(res.confirm){
  • wx.openSetting({
  • success:(res)=>{
  • res.authSetting ={
  • 'scope.invoiceTitle':true,
  • };
  • },
  • complete:function(res){
  • openSetting_invoiceTitle(authHandler);
  • },
  • })
  • }
  • if(res.cancel){
  • authHandler.fail();
  • // 注释上一行,启用下面这一行,就是强制用户授权
  • // openSetting_invoiceTitle(authHandler); //强制授权
  • }
  • if(!res.confirm &&!res.cancel){
  • openSetting_invoiceTitle(authHandler);
  • }
  • }
  • });
  • }else{
  • invoiceTitle(authHandler);
  • }
  • }
  • })
  • };
  • /**
  • * 授权--微信运动步数 wx.getWeRunData
  • * @param  {[type]} authHandler [description]
  • * @return {[type]}             [description]
  • */
  • function werun(authHandler){
  • wx.getSetting({
  • success(res){
  • if(!res.authSetting['scope.werun']){
  • wx.authorize({
  • scope:'scope.werun',
  • success(){},
  • complete(){
  • openSetting_werun(authHandler)
  • }
  • })
  • }else{
  • authHandler.success();
  • }
  • }
  • })
  • };
  • function openSetting_werun(authHandler){
  • wx.getSetting({
  • success(res){
  • if(!res.authSetting['scope.werun']){
  • wx.showModal({
  • title:'',
  • content:'请先完成授权!在设置页面中勾选“微信运动步数”选项,否则部分功能将受限。',
  • showCancel:true,
  • confirmText:'前去设置',
  • confirmColor:'#004b97',
  • success:function(res){
  • if(res.confirm){
  • wx.openSetting({
  • success:(res)=>{
  • res.authSetting ={
  • 'scope.werun':true,
  • };
  • },
  • complete:function(res){
  • openSetting_werun(authHandler);
  • },
  • })
  • }
  • if(res.cancel){
  • authHandler.fail();
  • // 注释上一行,启用下面这一行,就是强制用户授权
  • // openSetting_werun(authHandler); //强制授权
  • }
  • if(!res.confirm &&!res.cancel){
  • openSetting_werun(authHandler);
  • }
  • }
  • });
  • }else{
  • werun(authHandler);
  • }
  • }
  • })
  • };
  • /**
  • * 授权--录音功能 wx.startRecord
  • * @param  {[type]} authHandler [description]
  • * @return {[type]}             [description]
  • */
  • function record(authHandler){
  • wx.getSetting({
  • success(res){
  • if(!res.authSetting['scope.record']){
  • wx.authorize({
  • scope:'scope.record',
  • success(){},
  • complete(){
  • openSetting_record(authHandler)
  • }
  • })
  • }else{
  • authHandler.success();
  • }
  • }
  • })
  • };
  • function openSetting_record(authHandler){
  • wx.getSetting({
  • success(res){
  • if(!res.authSetting['scope.record']){
  • wx.showModal({
  • title:'',
  • content:'请先完成授权!在设置页面中勾选“录音功能”选项,否则部分功能将受限。',
  • showCancel:true,
  • confirmText:'前去设置',
  • confirmColor:'#004b97',
  • success:function(res){
  • if(res.confirm){
  • wx.openSetting({
  • success:(res)=>{
  • res.authSetting ={
  • 'scope.record':true,
  • };
  • },
  • complete:function(res){
  • openSetting_record(authHandler);
  • },
  • })
  • }
  • if(res.cancel){
  • authHandler.fail();
  • // 注释上一行,启用下面这一行,就是强制用户授权
  • // openSetting_record(authHandler); //强制授权
  • }
  • if(!res.confirm &&!res.cancel){
  • openSetting_record(authHandler);
  • }
  • }
  • });
  • }else{
  • record(authHandler);
  • }
  • }
  • })
  • };
  • /**
  • * 授权--保存到相册 wx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum
  • * @param  {[type]} authHandler [description]
  • * @return {[type]}             [description]
  • */
  • function writePhotosAlbum(authHandler){
  • wx.getSetting({
  • success(res){
  • if(!res.authSetting['scope.writePhotosAlbum']){
  • wx.authorize({
  • scope:'scope.writePhotosAlbum',
  • success(){},
  • complete(){
  • openSetting_writePhotosAlbum(authHandler)
  • }
  • })
  • }else{
  • authHandler.success();
  • }
  • }
  • })
  • };
  • function openSetting_writePhotosAlbum(authHandler){
  • wx.getSetting({
  • success(res){
  • if(!res.authSetting['scope.writePhotosAlbum']){
  • wx.showModal({
  • title:'',
  • content:'请先完成授权!在设置页面中勾选“保存到相册”选项,否则部分功能将受限。',
  • showCancel:true,
  • confirmText:'前去设置',
  • confirmColor:'#004b97',
  • success:function(res){
  • if(res.confirm){
  • wx.openSetting({
  • success:(res)=>{
  • res.authSetting ={
  • 'scope.writePhotosAlbum':true,
  • };
  • },
  • complete:function(res){
  • openSetting_writePhotosAlbum(authHandler);
  • },
  • })
  • }
  • if(res.cancel){
  • authHandler.fail();
  • // 注释上一行,启用下面这一行,就是强制用户授权
  • // openSetting_writePhotosAlbum(authHandler); //强制授权
  • }
  • if(!res.confirm &&!res.cancel){
  • openSetting_writePhotosAlbum(authHandler);
  • }
  • }
  • });
  • }else{
  • writePhotosAlbum(authHandler);
  • }
  • }
  • })
  • };
  • module.exports ={
  • userInfo: userInfo,
  • userLocation: userLocation,
  • address: address,
  • invoiceTitle: invoiceTitle,
  • werun: werun,
  • record: record,
  • writePhotosAlbum: writePhotosAlbum,
  • putLoginLog: putLoginLog,
  • getSession: getSession,
  • };

二、如何使用

在你的JS文头,引用auth.js

  • var auth = require('../../utils/auth.js');
  • // 在调用通讯地址判断是否开启授权,如果没开启就会自动调用授权
  • auth.address({
  • success:function(res){
  • console.log('已授权');
  • // 这儿写你的业务逻辑
  • },
  • fail:function(res){
  • console.log('未授权');
  • wx.showToast({
  • title:'未授权',
  • });
  • }
  • });
 

小程序判断是否授权源码 auth.js的更多相关文章

  1. 基于olami开放语义平台的微信小程序遥知之源码实现

    概述 实现一个智能生活信息查询的小秘书功能,支持查天气.新闻.日历.汇率.笑话.故事.百科.诗词.邮编.区号.菜谱.股票.节目预告,还支持闲聊.算24点.数学计算.单位换算.购物.搜索等功能. 使用方 ...

  2. 微信小程序支付C#后端源码

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  3. 微信商城小程序 带java后台源码

    微信小程序商城(Java版) 技术选型 1 后端使用技术 1.1 spring-web-4.0.2.RELEASE 1.2 mybatis3.2.8 1.3 shiro1.2.3 1.4 servle ...

  4. ESA2GJK1DH1K微信小程序篇: 小程序实现MQTT封包源码使用说明

    说明 我为了后期能够快速的让小程序实现MQTT,我做了一个MQTT的封装. 功能的封装有助于后期快速的开发,还方便咱维护. 我后期的所有代码皆使用此封装库, 这一节,我就详细的介绍我封装的MQTT.j ...

  5. 微信小程序——智能小秘“遥知之”源码分享(语义理解基于olami)

    微信小程序智能生活小秘书开发详解 >>>>>>>>>>>>>>>>>>>>> ...

  6. 微信小程序条码、二维码生成模块

    代码地址如下:http://www.demodashi.com/demo/13994.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  7. 微信小程序新版用户授权方式处理

    最新更新(2018-12-27): 最近做了改版,做成默认进来就是首页,然后去判断有没有用户信息,没有的话再去判断用没授权过,如果授权过直接自动去获取,没有的话再跳转到授权页面.因为用户授权主要就是针 ...

  8. 微信小程序获取地理位置授权

    微信小程序获取地理位置授权,首先需要在app.json中添加配置: "permission": { "scope.userLocation": { " ...

  9. 微信小程序开发 - 用户授权登陆

    准备:微信开发者工具下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 微信小程序开发文档:htt ...

随机推荐

  1. Python 判断文件是否存在的三种方法

    通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错.所以最好在做任何操作之前,先判断文件是否存在. 这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try ...

  2. SSH命令详解2

    ssh命令详解     目录         前言     一.ssh命令         1.Ssh参数解释         2.如何连接远程主机         3.利用Xstart 在windo ...

  3. js中找string中重复项最多的字符个数

    // split():字符串中的方法,把字符串转成数组. // sort():数组中的排序方法,按照ACALL码进行排序. // join():数组中的方法,把数组转换为字符串 function de ...

  4. [Learn AF3]第四章 App framework组件之Button

    Button    组件名称:Button     是否js控件:否     使用说明:如果说panel组件是af3的“核心(heart of the ui)”,那么Button就是af中的五虎上将之 ...

  5. 条理清晰的搭建SSH环境之整合Struts和Spring

    上文说到搭建SSH环境所需三大框架的jar包,本篇博客将通过修改配置文件整合Struts和Spring,下篇博客整合Hibernate和Spring即可完成环境搭建. 1.声明bean,新建TestA ...

  6. Qt Creater中的.pro文件和.pri文件

    初学Qt,使用Qt Creater打开Demo "QT 3D Basic Shapes C++ Example",发现除了pro文件外,还有一个pri文件,在此小白一下! *.pr ...

  7. flexbox父盒子flex-wrap属性

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 【AI】Win10-Tensorflow

    一.安装 第一步:先安装anaconda3第二步:pip install --upgrade --ignore-installed tensorflow或者:pip install tensorflo ...

  9. 转载 IMP时数据库的IO性能监控,并提供IOPS的计算方法

     IMP时数据库的IO性能监控,并提供IOPS的计算方法 2011-07-15 17:36:10 分类: Linux [root@ntkdb oradata]# iostat -x 1 10     ...

  10. PHP代码审计笔记--任意文件上传

     0x01 最简单的文件上传 未进行文件类型和格式做合法性校验,任意文件上传 漏洞代码示例: 新建一个提供上传文件的 upload.html <html> <body> < ...