用户及授权设置API

news2024/10/7 14:29:38

用户及授权设置API

  • 一、登录API——wx.login(object)
  • 二、用户信息API——wx.getUserInfor(object)
  • 三、授权API——wx.authorize(object object)
  • 四、设置API——wx.openSetting(object object)&wx.getSetting(object object)
    • 1、wx.openSetting(object object)
    • 2、wx.getSetting(object object)

一、登录API——wx.login(object)

登录简单分为几个步骤:

1.小程序调用wx.login(object),获取登录凭证code值;
2. 小程序将用户登录凭证code 发往开发者服务器,换取唯一的标识和绘话密钥;
3.开发者服务器和微信服务器交互换取唯一标识和绘话密钥;
4.开发者服务器生成自己的sessionId;
5.小程序客户端保存sessionId;
6.wx.checkSession(object)检查登录状态是否过期;

在这里插入图片描述

步骤③详解:https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secrect=SECRECT&js_code=JSONCODE&grant_type=authorization_code
参数说明:
appid:小程序唯一标识;
secret:小程序的App secret;
js_code:wx.login()获取code;
gran_type:authorization_code,小程序授权类型;

1、《wx.login(object)参数说明》

字段是否必填数据类型含义
timeoutnumber超时时间
successfunction调用成功的回调函数
failfunction调用失败的回调函数
completefunction调用结束的回调函数(成功、失败都会执行)
//步骤1&2 app.js
App({
  onLaunch: function () {
    wx.login({
      success: (res) => {
        var code = res.code; // 用户登录凭证
        if(code){
          wx.request({
            url: 'url', // 开发者服务器地址
            data:{code:code},
          })
        } else {
          console.log("获取用户凭证失败"}
      },
    })
  }
});

4、sessionId用于开发者服务器和小程序之间做登录状态校验,为了保证安全性,sessionId应满足以下几点要求:

  • 长度足够长,建议2128种组合,即长度为168;
  • 规则可以自己确定,避免使用srand(当前时间),然后rand()的方法,建议采用操作系统提供的真正随机数机制,比如企业Linux下面读取/dev/urandom设备,或者拼写成字符串再MD5加密等多种方式。
  • 设置一定的有效时间,对于过期的sessionId视为不合法。sessionId保存到缓存Memcached、Redis或内存里面都可以。以sessionId为key,session-key+openId为value进行存储。
    5、小程序客户端没有类似于浏览器的cookie或者session机制,但是小程序可以利用其Storage机制来保存sessionId。在之后需要登录后才有权限访问的后台服务时,可以在请求中携带Storage中的sessionId,后台服务获取该sessionId后从缓存Redis或内存中查找校验该sessionId,如果有且正确的有效,继续执行后续代码,否则进行错误处理。
    6、《wx.checkSession(object)参数说明》
    字段 | 是否必填|数据类型 | 含义
    -------- | ----- | -----| -----
    success|否|function|调用成功的回调函数,登录状态未过期
    fail|否|function|调用失败的回调函数,已过期
    complete|否|function|调用结束的回调函数(成功、失败都会执行)

二、用户信息API——wx.getUserInfor(object)

只有在用户登录状态才能获取到用户的相关信息,在用户授权过的情况下,调用此接口将不再出现授权弹窗。

Page({
  onLoad:function () {
    // 必须在用户已经授权的情况下调用
    wx.getUserInfo({
      success:function (res) {
        var userInfo = res.userInfo;
      }
    })
  }
});

《wx.getUserInfor(object)参数说明》

字段是否必填数据类型含义
withCredentialboolean是否带上登录信息状态
langstring显示用户信息的语言,en,zh_CN,zh_TW(繁体中文)
successfunction调用成功的回调函数
failfunction调用失败的回调函数
completefunction调用结束的回调函数(成功、失败都会执行)

《上面success返回参数说明》

字段数据类型----
userInfoobjectnickName,country,province,city,language,avatarUrl(用户头像图片地址)、gender(性别,0位置,1男,2女)
rawDatastring不包括敏感信息的原始数据字符串,用于计算签名
signaturestring使用sha1(rawData+sessionkey)得到字符串,用于校验用户信息
encryptedDatastring包括敏感信息在内的完整用户信息的加密数据
ivstring加密算法的初始量
cloudIDstring敏感数据对应的云ID。开通云开发的小程序才会返回,可通过云调用直接获取开放数据。

三、授权API——wx.authorize(object object)

微信小程序部分API接口需要通过wx.authorize(object object)来向用户发起授权请求,调用后立即以弹窗的形式询问用户是否同意授权小程序使用某项功能或获取用户的某项数据,但不会实际调用应用接口,如果用户之前已经同意授权则不会出现弹窗,直接返回成功,开发者可以使用wx.getSetting获取用户当前的授权状态。
打开设置页面,用户可以在小程序设置页面“右上角”-“关于”-“右上角”-“设置”中控制对该小程序的授权状态。开发者可以调用wx.openSetting(object object),打开设置页面,引导用户开启授权。

Page({
  onLoad:function () {
    // 可以通过wx.getSetting先查询用户是否授权了scope.record
    wx.getSetting({
      success:function (res) {
        if (!res.authSetting['scope.record']) {
        // wx.authorize进行授权
          wx.authorize({
            scope: 'scope.record',
            success(){
              // 用户已同意使用录音功能,
              // 后续调用wx.startRecord()接口不会有弹窗询问
              wx.startRecord();
            }
          })
        }
      }
    })
  }
});

《scope授权列表》

含义scope.对应接口
用户信息userInfowx.getUserInfo
地理位置userLocationwx.getLocation、wx.closeLocation
通信地址addresswx.chooseAdress
发票抬头invoiceTitlewx.chooseInvoiceTitle
获取发票invoicewx.chooseInvoice
微信运动步数werunwx.getRunData
录音功能recordwx.startRecord
保存到相册功能writePhotosAlbumwx.saveImageToPhotosAlbum、wx.saveVideoToPhotosAlbum
摄像头cameracamera

四、设置API——wx.openSetting(object object)&wx.getSetting(object object)

微信小程序提供如下设置相关API接口:

1、wx.openSetting(object object)

调起客户端小程序设置页面,返回用户设置的操作结果。

设置页面只会出现小程序已经向用户请求过的权限。从开发者工具i3.0版本开始,用户发生点击行为后才可以跳转打开设置页,管理授权页面。

2、wx.getSetting(object object)

获取用户的当前设置。

返回之中只会出现小程序已经向用户请求过的权限。

// index.wxml
<!-- 方法一:使用button组件来使用此功能 -->
<button open-type="openSetting" bindopensetting="handler">
  点击获取授权并获取位置信息
</button>
<!-- 由点击行为触发wx.openSetting接口的调用 -->
<button bind:tap="settingBtn">
  打开设置页面
</button>
// index.js
Page({
  handler:function (e) {
    var that = this;
    if (!e.detail.authSetting['scope.userLocation']) {
      // 打开设置页面
    }
  },
  settingBtn:function () {
    wx.openSetting();
  }
});

返回授权结果AuthSetting对象,对象属性如下所示:

booleanscope.含义对应接口
userInfo是否授权用户信息wx.getUserInfo
userLocation是否授权地理位置wx.getLocation、wx.closeLocation
address是否授权通信地址wx.chooseAdress
invoiceTitle是否授权发票抬头wx.chooseInvoiceTitle
invoice是否授权获取发票wx.chooseInvoice
werun是否授权微信运动步数wx.getRunData
record是否授权录音功能wx.startRecord
writePhotosAlbum是否授权保存到相册功能wx.saveImageToPhotosAlbum、wx.saveVideoToPhotosAlbum
camera是否授权摄像头camera组件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1121342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汽车屏类产品(五):中控IVI车载信息娱乐系统

前言: 车载信息娱乐系统(IVI)的起源可以追溯到20世纪,按钮调幅收音机被认为是第一个功能。从那以后,IVI系统在创造壮观的车内体验方面变得不可或缺,以至于汽车被称为“车轮上的智能手机”。但随着包括自动驾驶汽车在内的汽车技术的进步,以及对个性化体验的需求不断增长…

从裸机启动开始运行一个C++程序(十二)

前序文章请看&#xff1a; 从裸机启动开始运行一个C程序&#xff08;十一&#xff09; 从裸机启动开始运行一个C程序&#xff08;十&#xff09; 从裸机启动开始运行一个C程序&#xff08;九&#xff09; 从裸机启动开始运行一个C程序&#xff08;八&#xff09; 从裸机启动开始…

SpringBoot连接MySQL密码错误,报错:Access denied for user

记&#xff1a;一次连接MySQL报密码错误&#xff0c;Access denied for user 检查步骤&#xff1a; 核对用户和密码是否正确&#xff0c;用工具登陆试下。如果配置文件是yml格式&#xff0c;配置密码是123456这种纯数字&#xff0c;记得加上单/双引号。检查云上数据库配置&am…

使用rna-seq定量软件salmon运行index步骤遇到的一个问题(计算集群slurm)

salmon 帮助文档 https://salmon.readthedocs.io/en/latest/building.html#installation github主页 https://github.com/COMBINE-lab/salmon 我最开始是直接使用conda安装的 v1.4 首先第一步是对参考转录组进行索引&#xff0c;命令 salmon index -t pome.fa -i transcr…

postgresql14-用户与角色(二)

介绍 查看 SELECT rolname FROM pg_roles;postgres是系统初始化时默认创建的角色&#xff0c;为超级管理员。 \duList of rolesRole name | Attributes | Member of ------------------------------------------------------…

python 之计算矩阵乘法

文章目录 总的介绍例子 总的介绍 np.matmul 是NumPy库中的矩阵乘法函数&#xff0c;用于执行矩阵乘法操作。矩阵乘法是线性代数中的一种常见操作&#xff0c;用于将两个矩阵相乘以生成新的矩阵。在神经网络、机器学习和科学计算中&#xff0c;矩阵乘法经常用于变换和组合数据。…

简单宿舍管理系统(springboot+vue)

简单宿舍管理系统&#xff08;springbootvue&#xff09; 1.创建项目1.前端2.数据库3.后端 2.登陆1.前端1.准备工作2.登陆组件3.配置 2.后端1.链接数据库2.创建用户实体类3.数据操作持久层1.配置2.内容3.测试 4.中间业务层1.异常2.业务实现3.测试 5.响应前端控制层 3.前后对接4…

散列表:Word文档中的单词拼写检查功能是如何实现的?

文章来源于极客时间前google工程师−王争专栏。 一旦我们在Word里输入一个错误的英文单词&#xff0c;它就会用标红的方式提示“编写错误”。Word的这个单词拼写检查功能&#xff0c;虽然很小但却非常实用。这个功能是如何实现的&#xff1f; 散列别&#xff08;Hash Table&am…

linux复习笔记02(小滴课堂)

linux下输入输出错误重定向&#xff1a; 输入重定向&#xff1a;< 一个大于号是进行了覆盖。 两个大于号是追加。 输出重定向可以用于以后日志打印。 错误重定向&#xff1a; 错误重定向是不把信息打印到屏幕上而是打印到指定文件中去&#xff1a; 输出重定向其实是用的1…

【论文阅读】(2023TPAMI)PCRLv2

目录 AbstractMethodMethodnsU-Net中的特征金字塔多尺度像素恢复多尺度特征比较从多剪切到下剪切训练目标 总结 Abstract 现有方法及其缺点&#xff1a;最近的SSL方法大多是对比学习方法&#xff0c;它的目标是通过比较不同图像视图来保留潜在表示中的不变合判别语义&#xff…

可视化数学分析软件 MATLAB R2021b mac中文版软件介绍

MATLAB R2021b mac作为数学类科技应用软件中首屈一指的商业数学软件&#xff0c;可以帮助您进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。…

算法刷题-链表

算法刷题-链表 203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5]…

小成代码路的错误

文章目录 计算长度使用左闭右开的方法getline(解决输入空格问题和给一个输入的界限&#xff09;stoi(字符串转整形&#xff09;stoi&#xff08;整型转字符串型&#xff09;reverse&#xff08;反转函数&#xff09;将字符串立志静成员变量在类外初始化&#xff1b;但是有特例&…

FreeSWITCH 1.10.10 简单图形化界面12 - 注册IMS

FreeSWITCH 1.10.10 简单图形化界面12 - 注册IMS 0、 界面预览1、IMS注册-SIP中继基本设置界面2、IMS注册-SIP中继呼叫设置3、IMS中继-代理设置界面4、IMS注册-SIP中继状态界面5、IMS注册-SIP中继详细状态界面6、IMS注册-SIP中继代拨号码优先界面 FreeSWITCH界面安装参考&#…

Qt planeGame day10

Qt planeGame day10 Game基本框架 qt中没有现成的游戏框架可以用&#xff0c;我们需要自己搭框架首先创建一个QGame类作为框架&#xff0c;这个基本框架里面应该有如下功能&#xff1a;游戏初始化 void init(const QSize& siez,const QString& title);游戏反初始化(…

系统报错“由于找不到vcomp140.dll无法继续执行代码”的解决方案

在我们日常使用电脑的过程中&#xff0c;可能会遇到一些错误提示&#xff0c;其中之一就是“找不到vcomp140.dll”。这个错误可能让许多用户感到困扰&#xff0c;因为它可能影响到我们的电脑使用。那么&#xff0c;vcomp140.dll是什么意思&#xff1f;当我们遇到这个问题时&…

学习笔记2——Nosql

学习笔记系列开头惯例发布一些寻亲消息 链接&#xff1a;https://baobeihuijia.com/bbhj/contents/3/194205.html 跟学链接 跟学视频链接&#xff1a;https://www.bilibili.com/video/BV1S54y1R7SB/?spm_id_from333.999.0.0 &#xff08;建议有java基础的同学学习或者一直…

发挥设计模式单例模式的力量:从技术到社会的转变

文章目录 &#x1f31f; 如何将设计模式单例模式运用到社会当中&#x1f34a; 什么是单例模式&#x1f34a; 单例模式在现实生活中的应用&#x1f389; 数据库连接池&#x1f389; 日志管理器&#x1f389; 系统配置中心 &#x1f34a; 如何将单例模式应用于社会中&#x1f389…

【Unity程序技巧】公共Update管理器

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

hugo-stack for github

静态博客框架jekyll、hexo和hugo三者之间的区别与差异 博客生成器? 全名为静态网站生成器&#xff0c; 可在任意拥有主机功能的环境下寄存(托管)可直接配合域名进行全球访问 劣势: 每次更新网页必须重新生成整个网站编译速度&#xff08;单位&#xff1a;秒&#xff09; Jek…