首页 > 编程语言 >小程序开发实战案例之如何获取用户信息(一)

小程序开发实战案例之如何获取用户信息(一)

时间:2023-12-01 15:23:49浏览次数:47  
标签:实战 手机号 获取 res 程序开发 用户 信息 案例 my

✌️ 简单唠两句

经过小程序 0-1 开发系列内容的学习,相信大家对于如何开发小程序已经有了一些初步了解。今天新开设小程序开发实战专栏,希望能帮助大家在 不同小程序开发场景中 更丝滑的完成开发~

 

支付宝小程序开发 0-1 系列专栏内容详见:

最新demo版|如何0-1开发支付宝小程序之前期准备篇(一)

最新demo版 | 如何0-1开发支付宝小程序之如何调试小程序(二)

最新demo版 | 如何0-1开发支付宝小程序之小程序页面功能介绍(三)

最新demo版 | 如何0-1开发支付宝小程序之小程序如何上线(四)

 

那么今天,我们来看一下支付宝小程序如何获取用户信息~

 

 

支付宝提供了不同的能力来实现获取用户的不同信息,分别为:

大家可以根据自己的使用场景来接入,接下来将对这几个方法逐一介绍。

 

获取用户信息原则

在介绍之前,先明确一个授权原则(很重要):

  • 支付宝小程序 不允许首屏弹窗引导用户授权,即用户进入小程序后无任何交互动作直接弹出授权弹窗

有上面情况的话,小程序审核无法通过,大家注意避坑。

 

用户授权

该方法获取的信息最多,但是步骤也是最复杂的。

  • 使用的 API:my.getAuthCode
  • 可获取到的信息:userId、头像地址、昵称、性别、省/市名称
  • 前端是否能直接获取到信息: 否,需要与后端交互获取到信息
  • 使用场景:获取用户信息登录
 <!-- .axml -->
<button size="default" type="primary" onTap="getCode">点击进行用户授权</button>
// .js页面
Page({
getCode() {
  my.getAuthCode({
    scopes: 'auth_user',
    success: res => {
      const authCode = res.authCode;
      console.log('authCode',authCode);
      // 通过my.request方法,将authCode传到服务端获取用户信息
      my.request({
        // 你的服务器地址
        url: 'https://yourserveraddress',
        data: {
          authCode,
        },
        success(res) {
          // 后端返回接收用户信息res
          console.log(res)
        }
      })
    },
    fail: err => {
      console.log('my.getAuthCode 调用失败', err)
    }
  });
},
});

后端接收到 authCode 之后,需要走下面两步才能获取到用户信息:

1、通过 alipay.system.oauth.token 接口获取 access_token 参数

2、将 access_token 参数传入 alipay.user.info.share 接口中获取

 

这边汇总了一些调用时常见的问题,大家可以参考下:

 

获取会员基础信息

  • 使用的 API:my.getOpenUserInfo
  • 可获取到的信息:头像地址、昵称。
  • 前端是否能直接获取到信息:
  • 使用场景:单独获取头像、补充昵称信息等

 

<!-- .axml -->
<button
  open-type="getAuthorize"
  scope="userInfo"
  onGetAuthorize="getOpenUserInfo"
  one rror="handleAuthError"
>
  会员基础信息授权
</button>
// .js页面
Page({
  data: {
    canIUseAuthButton: my.canIUse('button.open-type.getAuthorize')
},
getOpenUserInfo() {
    my.getOpenUserInfo({
        success: (res) => {
            let userInfo = JSON.parse(res.response).response
            console.log('userInfo',userInfo)
        },
        fail: (err) => {
            console.log(err)
        }
    });
}
});

IDE 返回:

 

实际只能获取到头像地址、昵称。性别和省市信息虽然有对应的字段但是无法返回具体值。

 

对接my.getOpenUserInfo的常见问题汇总在这里了:

 

获取会员手机号

  • 使用的 API:my.getPhoneNumber
  • 可获取到的信息:手机号
  • 前端是否能直接获取到信息: 否,前端获取到的是加密数据,需要传到后台解密。

 

<!-- .axml -->
<button
  open-type="getAuthorize"
  scope="phoneNumber"
  onGetAuthorize="getPhoneNumber"
  one rror="handleAuthError"
  >
  授权手机号
</button>

 

// .js页面
Page({
getPhoneNumber() {
  my.getPhoneNumber({
    success: (res) => {
      let encryptedData = res.response;
      console.log('phone',encryptedData)
      my.request({
        //你的服务器地址
        url: 'https://xxxxxxx',
        data: encryptedData,
      });
    },
    fail: (res) => {
      console.log(res);
    },
  });
}
});

 

授权之后,你会发现获取到的手机号信息是一串 加密的数据

别担心,这是正常的,因为涉及到用户的敏感信息,所以无法直接明文获取到信息

按照下面的步骤走:

1、将这串数据通过 my.request 方法传到服务端

2、通过 [如何使用AES密钥解密] 进行解密

3、解密成功,获取到手机号

 

如果解密出来的数据不是手机号,而是一串报错信息,例如:

也不要着急,参考上面的方案进行排查,解决问题后再进行获取。

 

获取手机号的问题比较多,其他问题大家也可以参考下:

 

获取会员收货地址

  • 使用的 API:my.getAddress
  • 可获取到的信息:收货地址列表
  • 前端是否能直接获取到信息: 是。如果没有地址,会提示新增收货地址。

 

<!-- .axml -->
<button size="default" type="primary" onTap="getAddress">点击获取收货地址</button>
// .js页面
Page({
getAddress(){
  my.getAddress({
    success: function(res) {
      console.log(res);
    },
    fail: function(err) {
      console.log(err);
    }
  });
}
});

 

获取的地址是支付宝里面的,跟淘宝不互通,参考

标签:实战,手机号,获取,res,程序开发,用户,信息,案例,my
From: https://www.cnblogs.com/yjdmx/p/17869754.html

相关文章

  • 九章算法Twitter 后端系统 - Python 项目实战2023
    获取完整版--》请留言VisualStudioCodeVisualStudioCode(简称VSCode)是一个免费的跨平台文本编辑器,由微软开发和维护。虽然它被称为文本编辑器,但它实际上是一个功能强大的集成开发环境(IDE),支持多种编程语言,如Python、JavaScript、C++等。以下是VSCode的一些主要特点:轻量级:VSCo......
  • 解锁机器学习-梯度下降:从技术到实战的全面指南
    本文全面深入地探讨了梯度下降及其变体——批量梯度下降、随机梯度下降和小批量梯度下降的原理和应用。通过数学表达式和基于PyTorch的代码示例,本文旨在为读者提供一种直观且实用的视角,以理解这些优化算法的工作原理和应用场景。关注TechLead,分享AI全维度知识。作者拥有10+年互......
  • 天津消防政务新媒体信息案例研究——文档
    摘要:现阶段,政务新媒体发展迅速,其逐渐进入到提升期。依据行政体制的要求,保障信息生产与传播的科学性是当前政务新媒体迫在眉睫的任务。本文结合2022年政务微博影响力研究,以“天津消防”的官方抖音账号为例,整理其信息展现形式和传播效果,剖析其因素,以具体的案例,对其各个平台引流矩阵等......
  • 解锁机器学习-梯度下降:从技术到实战的全面指南
    本文全面深入地探讨了梯度下降及其变体——批量梯度下降、随机梯度下降和小批量梯度下降的原理和应用。通过数学表达式和基于PyTorch的代码示例,本文旨在为读者提供一种直观且实用的视角,以理解这些优化算法的工作原理和应用场景。关注TechLead,分享AI全维度知识。作者拥有10+年......
  • 使用Unity Localization插件进行项目本地化实战详解
    在使用Unity开发游戏的过程中,本地化是必不可少的。网络上也有很多的本地化工具,本次我介绍的是Unity官方提供的Localization插件,大家可以在PackageManager进行安装 一、语言配置,本地化表创建在ProjectSetting中找到Localization,(需要先创建这个LocalizationSetting文件)点击L......
  • 微信小程序开发的聚合函数排序.aggregate.sort
    //普通查询用.orderBy('add_time','desc'),聚合查询用.sort({ins_time:-1})'usestrict';constdb=uniCloud.database()//对数据库的对象获取;exports.main=async(event,context)=>{ letstart=newDate().getTime(); constcollection=db......
  • 多工序多基地钢铁铁前数字智能协同制造项目案例
        本项目案例后台采用.NET6(C#)开发,前端采用React&ReactNative,数字孪生采用3DMAX&U3D。工厂级示范基地(一)兴澄特钢炼铁大数据平台本项目覆盖配矿-烧结-高炉大炼铁产线,综合运用“物、大、智、云、移”技术,采用云-边-端工业互联网架构,设备端基于工业传感器和物联网保障......
  • 开发案例分享:万能卡片也能用来玩游戏
     一、前言作为一名开发爱好者,从大了讲,我学习并进行HarmonyOS相关开发是为了能为鸿蒙生态建设尽一份绵薄之力,从小了讲,就是为了自己的兴趣。而万能卡片是一个让我非常感兴趣的东西。很多时候我跟别人解释什么是万能卡片,都会这么说:"万能卡片能实现让你在不用打开app的前提下,在桌......
  • 17-有参转录组实战3-计算readcount和TPM表达量
     #本教程部分文件,来源B站15天入门生物信息教程“https://www.bilibili.com/video/BV1K44y1B7Dg/?spm_id_from=333.337.search-card.all.click&vd_source=19eea84b7c1e944fd3c6b3ccca066ade”#1,先将毛果杨的GFF格式的注释文件转换为GTF格式:condainstallgffreadgffread......
  • 知乎知学堂小红书变现实战计划
    获取完整版--》请留言➤由于信息差的关系,很多剁手党都不曾了解过,不知道如何领取内部优惠券和返利。像朋友圈、微信群、等渠道分享的商品链接,都是通过返利平台领取的,他们都能赚佣金,现在下载“高省”app,自己赚佣金!高省不仅可以省钱,还可以赚钱,分享商品―用户下单我赚佣金。分享注册......