用户及授权设置API

编程入门 行业动态 更新时间:2024-10-27 18:18:56

<a href=https://www.elefans.com/category/jswz/34/1771412.html style=用户及授权设置API"/>

用户及授权设置API

用户及授权设置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)检查登录状态是否过期;

步骤③详解:=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.recordwx.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组件

更多推荐

用户及授权设置API

本文发布于:2023-12-05 08:18:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1663645.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:用户   API

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!