一、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学习注脚

    python版本:2.7.6 Python基础学习书摘. 变量命名规范: python的变量名只能由字母和数字组成,且必须以字母开头. python的变量名不能使用系统已有的关键字,包括: and c ...

  2. WEB网页监控系统的设计框架思路具体解释

    提示:也能够直接在LCD上显示摄像头数据.这个參考luvcview源代码.设计思路思将YUV或者MJPEG格式的数据转换成RGB格式的数据,然后实现图片的缩放,图像缩放算法:点击这里!,然后写到fra ...

  3. C# int转string 每三位加一个逗号

    ; Console.WriteLine(aaaa.ToString("N0")); Console.WriteLine()); Console.WriteLine("架构 ...

  4. 精心挑选的HTML5/CSS3应用及源码

    这段时间我已经为大家分享了不少关于HTML5应用和jQuery插件了,先来回顾一下: 炫酷霸气的HTML5/jQuery应用及源码 干货分享 超炫丽的HTML5/jQuery应用及代码 绚丽而实用的j ...

  5. .OFF 格式文件

    转载:http://blog.sina.com.cn/s/blog_643634b80102v166.html 物体文件格式(.off)文件通过描述物体表面的多边形来表示一个模型的几何结构,这里的多边 ...

  6. c/c++ 代码中使用sse指令集加速

    使用SSE指令,首先要了解这一类用于进行初始化加载数据以及将暂存器的数据保存到内存相关的指令, 我们知道,大多数SSE指令是使用的xmm0到xmm8的暂存器,那么使用之前,就需要将数据从内存加载到这些 ...

  7. Tomcat域名绑定

    域名绑定与虚拟目录设置: conf/server.xml 的修改方式如下: 单个域名绑定: 原始: <Engine name="Catalina" defaultHost=& ...

  8. UNIX环境编程学习笔记(22)——进程管理之system 函数执行命令行字符串

    lienhua342014-10-15 ISO C 定义了 system 函数,用于在程序中执行一个命令字符串.其声明如下, #include <stdlib.h> int system( ...

  9. 找不到 android-support-v4 解决办法

    Project->properties->Java Build Path->Libraries->Add External Jars中加入sdk目录下的extras/andro ...

  10. VS2008编译错误:error C2065: 'PMIB_TCPSTATS' : undeclared identifier c:\program files (x86)\microsoft sdks\windows\v7.0a\include\iphlpapi.h 411

    安装了VS2008编译之前的程序,结果出现了编译错误,以为是VS2008的Sp1补丁没装好,重装补丁后还是不行,编译错误如下: 双击错误会定位在iphlpapi.h中, 一个可行的解决办法是:把iph ...