小程序登录授权获取用户信息

一  登录
时序图如下:


wx.login()
获取js_code
示例代码:
App({
onLaunch: function() {
wx.login({
success: function(res) {
if (res.code) {
//TODO
} else {
console.log('获取用户登录态失败!' + res.errMsg)
}
}
});
}
})

code 换取 session_key
接口地址:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
请求参数:
参数必填说明
appid小程序唯一标识
secret小程序的 app secret
js_code登录时获取的 code
grant_type填写为 authorization_code
返回参数:
参数说明
openid用户唯一标识
session_key会话密钥
unionid用户在开放平台的唯一标识符。本字段在满足一定条件的情况下才返回。具体参看UnionID机制说明

wx.checkSession
检测当前用户登录态是否有效
wx.checkSession({
success: function(){
//session 未过期,并且在本生命周期一直有效
},
fail: function(){
//登录态过期
wx.login() //重新登录
....
}
})




二 授权
部分接口需要获得用户授权同意后才能调用。此类接口调用时:
  • 如果用户未接受或拒绝过此权限,会弹窗询问用户,用户点击同意后方可调用接口;
  • 如果用户已授权,可以直接调用接口;
  • 如果用户已拒绝授权,则短期内不会出现弹窗,而是直接进入接口 fail 回调。请开发者兼容用户拒绝授权的场景。

开发者可以使用 wx.getSetting 获取 用户当前的授权状态
wx.getSetting({
success: (res) => {
/*
* res.authSetting = {
*   "scope.userInfo": true,
*   "scope.userLocation": true
* }
*/
}
})


用户可以在小程序设置界面(右上角 - 关于 - 右上角 - 设置)中控制对该小程序的授权状态。
开发者可以调用 wx.openSetting 打开设置界面,引导用户开启授权。
wx.openSetting({
success: (res) => {
/*
* res.authSetting = {
*   "scope.userInfo": true,
*   "scope.userLocation": true
* }
*/
}
})


授权
提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。
OBJECT参数说明:

参数名类型必填说明
scopeString需要获取权限的scope,详见 scope 列表
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)
success返回参数说明:
参数名类型说明
errMsgString调用结果


// 先查询一下用户是否授权了 "scope.record" 这个 scope
wx.getSetting({
success(res) {
if (!res.authSetting['scope.record']) {
wx.authorize({
scope: 'scope.record',
success() {
// 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
wx.startRecord()
}
})
}
}
})



scope对应接口描述
scope.userInfowx.getUserInfo用户信息
scope.userLocationwx.getLocation, wx.chooseLocation地理位置
scope.addresswx.chooseAddress通讯地址
scope.invoiceTitlewx.chooseInvoiceTitle发票抬头
scope.werunwx.getWeRunData微信运动步数
scope.recordwx.startRecord录音功能
scope.writePhotosAlbumwx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum保存到相册
scope.camera 摄像头


三  获取用户信息

1.wx.getUserInfo(OBJECT)

获取用户信息,withCredentials 为 true 时需要先调用 wx.login 接口。
需要 用户授权 scope.userInfo
OBJECT参数说明:
参数名类型必填说明最低版本
withCredentialsBoolean是否带上登录态信息1.1.0
langString指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。默认为en。1.3.0
successFunction接口调用成功的回调函数 
failFunction接口调用失败的回调函数 
completeFunction接口调用结束的回调函数(调用成功、失败都会执行) 
注:当 withCredentials 为 true 时,要求此前有调用过 wx.login 且登录态尚未过期,此时返回的数据会包含 encryptedData, iv 等敏感信息;当 withCredentials 为 false 时,不要求有登录态,返回的数据不包含 encryptedData, iv 等敏感信息。
success返回参数说明:
参数类型说明
userInfoOBJECT用户信息对象,不包含 openid 等敏感信息
rawDataString不包括敏感信息的原始数据字符串,用于计算签名。
signatureString使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,参考文档 signature。
encryptedDataString包括敏感数据在内的完整用户信息的加密数据
ivString加密算法的初始向量
userInfo参数说明:
参数类型说明
nickNameString用户昵称
avatarUrlString用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
genderString用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
cityString用户所在城市
provinceString用户所在省份
countryString用户所在国家
languageString用户的语言,简体中文为zh_CN
示例代码:
wx.getUserInfo({
success: function(res) {
var userInfo = res.userInfo
var nickName = userInfo.nickName
var avatarUrl = userInfo.avatarUrl
var gender = userInfo.gender //性别 0:未知、1:男、2:女
var province = userInfo.province
var city = userInfo.city
var country = userInfo.country
}
})

encryptedData 解密后为以下 json 结构
{
"openId": "OPENID",
"nickName": "NICKNAME",
"gender": GENDER,
"city": "CITY",
"province": "PROVINCE",
"country": "COUNTRY",
"avatarUrl": "AVATARURL",
"unionId": "UNIONID",
"watermark":
{
"appid":"APPID",
"timestamp":TIMESTAMP
}
}




2.getPhoneNumber(OBJECT)
获取微信用户绑定的手机号,需先调用 login接口。
因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 <button> 组件的点击来触发。
注意:目前该接口针对非个人开发者,且完成了认证的小程序开放。需谨慎使用,若用户举报较多或被发现在不必要场景下使用,微信有权永久回收该小程序的该接口权限。
需要将 <button> 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到微信服务器返回的加密数据, 然后在第三方服务端结合 session_key 以及 app_id 进行解密获取手机号。

在回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。

代码示例:
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"> </butto>
Page({
getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv)
console.log(e.detail.encryptedData)
}
})
参数类型说明
encryptedDataString包括敏感数据在内的完整用户信息的加密数据
ivString加密算法的初始向量

encryptedData 解密后为以下 json 结构
{
"phoneNumber": "13580006666",
"purePhoneNumber": "13580006666",
"countryCode": "86",
"watermark":
{
"appid":"APPID",
"timestamp":TIMESTAMP
}
}
参数类型说明
phoneNumberString用户绑定的手机号(国外手机号会有区号)
purePhoneNumberString没有区号的手机号
countryCodeString区号

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序 wx.openSetting打开不显示,封装用户授权

测试功能的时候&#xff0c;想要设置用户相册的功能&#xff0c;打开突然什么也没有&#xff0c;要么就是显示“个人信息与权限使用记录”&#xff0c;就连打印出来的 console.log("授权",res.authSetting) 授权信息也是空的。 一、 wx.authorize() 去社区翻回答都在…

微信小程序中用户拒绝授权的处理方式

微信小程序中的权限介绍 大家如果接触过移动开发应该都知道&#xff0c;涉及到一些用户敏感信息的操作&#xff08;比如定位、访问本地文件等&#xff09;都是需要用户授权的&#xff0c;在Android开发中&#xff0c;我们需要提前将这些权限配置到项目中&#xff0c;Android 6…

微信小程序-同时获取麦克风、相机权限、获取多个权限

代码仓库&#xff1a;https://gitee.com/DerekAndroid/miniProgramAgen/tree/master/pages/authSetting 效果&#xff1a; wxml: <button bindtap"checkScopeCamera">申请获取相机权限</button> <button bindtap"checkScopeCamera">申…

微信小程序之获取用户位置权限(拒绝后提醒)

微信小程序获取用户当前位置有三个方式&#xff1a; 1. wx.getLocation&#xff08;多与wx.openLocation一起用&#xff09;   获取当前的精度、纬度、速度。不需要授权。当type设置为gcj02 返回可用于wx.openLocation的坐标2. wx.chooseLocation   需要授权&#xff0c;打…

微信小程序之位置信息权限获取和设置界面权限显示

小程序提交审核和发布后&#xff0c;多种机型使用起来发现了一个问题&#xff0c;在小程序设置中没有显示具体的权限信息。如下图所示 当考虑到用户使用小程序时&#xff0c;若缺少对应权限&#xff0c;按照官方案例讲的方式是进行自动导航跳转“设置”页面&#xff0c;让用户手…

微信小程序+权限操作

微信小程序权限操作 在小程序端查询数据(只能查询到用户在小程序中创建的数据&#xff0c;导入的数据是查不到的&#xff1b;要想查到导入的数据需要把数据表中的权限改为所有*用户可读 *) wx.getSetting(Object object) 获取用户的当前设置。返回值中只会出现小程序已经向用户…

【微信小程序】用户授权及getUserProfile接口使用

小程序登录、用户信息相关接口调整说明 为&#xfeff;优化用户的使用体验&#xff0c;平台将进行以下调整&#xff1a; 1&#xff0c;2021年2月23日起&#xff0c;若小程序已在微信开放平台进行绑定&#xff0c;则通过wx.login接口获取的登录凭证可直接换取unionID 2&#xff…

微信小程序授权 获取用户信息

小程序在18年4月25日做了一次更新,不再支持直接弹出授权信息框 具体代码请看这里: >> 获取用户信息(用户信息、获取unionId、openId)请移步到这里 用户打开小程序时&#xff0c;直接弹框获取用户信息授权&#xff0c;可能会立马懵圈&#xff1a; 你是谁&#xff1…

微信小程序之获取用户位置权限

微信小程序获取用户当前位置有三个方式&#xff1a; 1. wx.getLocation 注意&#xff1a; 先要在app.json里配置permission&#xff1a; 不然就会出现以下提示&#xff08;本地测试环境&#xff09;&#xff1a; 配置如下&#xff1a; "permission": {"scope…

发布微信小程序获取收集用户信息权限

前言 在发布微信小程序的时候我们经常会遇到审核不通过的情况&#xff0c;其中一种特别让我头疼就是说小程序收集、使用和储存用户信息。不给予通过。 但是他们的接口又不能提供这个功能&#xff0c;并且老是改动&#xff0c;真的特别的麻烦加无语。有时候审核偷一下懒&#xf…

微信小程序授权登录wx.getUserProfile获取不到昵称及头像解决方案

半年前做的个小程序&#xff0c;更新了二个文字&#xff0c;重新上传审核通过&#xff0c;悲剧了&#xff0c;新用户的昵称全部变为微信用户&#xff0c;头像全部变为默认头像&#xff0c;查了半天代码没找到原因&#xff0c;相当头大&#xff0c;搜了一下文档&#xff0c;尴尬…

小程序中的权限设计

日常我们开发小程序的时候,经常需要考虑权限如何设计,比如在我的页面,管理员可以看到一些菜单,而普通用户可以看到另外一些菜单。那如何设计这种带权限的功能呢?本文就以低代码工具为例,看看低代码中是如何设计小程序的权限的。 1 权限表设计 在通用的RBAC模型中,角色…

chatgpt赋能python:Python画出物体的运动轨迹

Python画出物体的运动轨迹 Python是一种很流行的编程语言&#xff0c;主要用于数据处理、科学计算以及图形绘制。在这篇文章中&#xff0c;我们将探讨如何使用Python画出物体的运动轨迹。 介绍 物体的运动轨迹通常是我们需要关注的问题。当我们在研究物理、机械、运动学、航…

chatgpt赋能python:Python画三维轨迹图:一个引人注目的可视化工具

Python画三维轨迹图&#xff1a;一个引人注目的可视化工具 Python是一种十分适合数据分析及科学计算的编程语言&#xff0c;它的可视化功能非常强大&#xff0c;其中最为出色的一点就是画三维轨迹图。这种图表的本质是一种描绘物体运动轨迹的可视化效果&#xff0c;它可以直观…

英文面试常见问题及回答汇总

今天给大家奉上英文面试常见问题及回答的合集&#xff0c;英语面试主要就是学习如何用英语回答面试常见问题&#xff0c;英文面试常见问题说来说去其实重要的就那么几个&#xff0c;所以今天分享的英文面试常见问题及回答大家只要知道其套路&#xff0c;然后灵活运用就行了。 常…

我的性格类型—— INFP(哲学家型人格 )

测试日期&#xff1a;2019/6/9 基本描述 INFP (Introverted Feeling with Intuition)代表人物&#xff1a;卢梭 语录&#xff1a;虽然我的心既傲慢又温柔&#xff0c;我的性格柔弱&#xff0c;然而&#xff0c;我是不可战胜的。 才储分析&#xff1a;您的性格类型倾向为“…

什么是MBTI,16种人格类型详解

MBTI是Myers-Briggs Type Indicator的缩写&#xff0c;是一种经典的人格类型测评工具&#xff0c;通过对个体心理偏好的测试和分析。 MBTI人格理论认为&#xff0c;人类的人格特征可以从四个角度进行分析&#xff1a;认知功能、信息获取、决策方式和生活方式。每个角度都有两个…

什么是i人,mbti中的i型人格是怎么样的

i人是MBTI总的I型人格&#xff0c;也就是内向型人格&#xff08;Introversion&#xff09;&#xff0c;在MBTI中是其中一个维度。以下是i人的一些常见特征和倾向&#xff1a; 1、内向和独处&#xff1a;I型人格更倾向于独自思考和独处。他们通常从独立的思考和内省中获取精力和…

MBTI性格测试中的 INTP 型人格

摘要&#xff1a;熟悉心理学的朋友&#xff0c;对mbti都不会陌生。而intp&#xff0c;可以说是一种牌玩得好就是天才&#xff0c;玩得不好境遇会十分惨&#xff0c;两极分化很严重的类型。今天我们来讲讲intp型人格都有哪些特征吧。 先来看看intp类型的人一般的倾向性。 MBTI性…

AI风范,院士点赞丨北京人工智能峰会暨AI金雁奖颁奖典礼成功举办,实在智能再获AI金雁奖

4月14日&#xff0c;由中国电子商会人工智能委员会主办&#xff0c;中国创业者俱乐部、北京集智未来人工智能产业创新基地联合主办的“2023北京人工智能峰会暨AI金雁奖颁奖典礼”举行&#xff0c;汇聚了人工智能各领域的产学研专家、院士、人工智能企业代表近300人&#xff0c;…