一、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. Type cvc-complex-type.2.4.c: The matching wildcard is strict...

    这个问题困扰了我两次,分别说一下原因:1. 如网上一些网友所言,是在配置Spring的标签库的时候有拼写错误或者遗漏.下面贴一个标准3.0的吧: <?xml version="1.0& ...

  2. C# 获取web.config配置文件

    .ConfigurationManager提供对客户端应用程序配置文件的访问. 其有两个属性1.ConnectionStrings 获取当前应用程序默认配置的 ConnectionStringsSec ...

  3. NPOIHelp 按固定模板导出和直接导出

    完整代码如下 using System; using System.Collections.Generic; using System.Data; using System.Text; using N ...

  4. NR 数据库简介

    目前有很多的数据库都存储了蛋白序列,比如NCBI Refseq, protein, swissprot 等,在各个数据库之间,或者是在某个数据库中,蛋白序列有大量冗余:为了方便使用,ncbi 构建了n ...

  5. ASP.NET程序也能像WinForm程序一样运行[转载]

    阅读目录 开始 操作方式 支持的ASP.NET程序类别 它也是个HTTP服务器 支持远程机器访问 不受限于Windows防火墙 尊重每个人的操作习惯 内置多标签浏览器支持 启动参数及配置文件 支持 . ...

  6. ffmpeg把ts文件转m3u8并切片

    Linux_x86_64流媒体环境:nginx + EasyDarwin-master 客户端播放器:VLC media player 下载windows下的ffmepg二进制版本,请进网站http: ...

  7. JS貪食蛇網頁代碼

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <bo ...

  8. srv.exe蠕虫病毒~

    你是否在电脑使用过程中遇到过这样的问题: 1.文件运行后,同目录下会出现一个原名 srv.exe的文件 2.文件运行后会把浏览器打开 3.电脑上的html文件末尾会增加一大堆东西 完了,电脑中了srv ...

  9. 在Ubuntu中开启Soft AP功能

    在Ubuntu中开启Soft AP功能 1.查看采用的无线网卡是否支持Soft AP: 注意,可以看到有AP字样,表明支持.楼主比较背,在易迅上挑了个销量最高的netcore nw360,结果无法搭建 ...

  10. SpringMVC由浅入深day01_12.4 pojo绑定_12.5自定义参数绑定实现日期类型绑定_12.6集合类

    12.4 pojo绑定 页面中input的name和controller的pojo形参中的属性名称一致,将页面中数据绑定到pojo. 页面定义: controller的pojo形参的定义: 打断点测试 ...