持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情
前言
如今各个大厂间为了自己产品生态的繁衍,为了更好的留存用户,都推出了自家的小程序开发平台,主要以微信和支付宝比较广泛,这一篇主要记录下自己开发支付宝小程序登录过程的一些体会。
开发流程
首先一定要熟读开发文档!!!
opendocs.alipay.com/mini/api/op…
获取用户信息
本文是以uni-app为例子开发
scopes | 描述 | 包含的服务端 API 接口 |
---|---|---|
auth_base | 授权获取用户唯一标识和授权访问令牌。在支付宝客户端获取 auth_code,传入服务端调用 alipay.system.oauth.token(换取授权访问令牌接口)获取支付宝会员标识(user_id)。此参数不会弹出授权浮窗。 | alipay.system.oauth.token |
auth_user | 授权获取支付宝会员信息。在支付宝客户端获取 auth_code,传入服务端调用 alipay.system.oauth.token 换取授权访问令牌,然后调用 alipay.user.info.share (支付宝会员授权信息查询接口)获取用户已授权的信息。 | alipay.system.oauth.token、alipay.user.info.share |
如上表,是来自官方对应的权限介绍, 通过调用my.getAuthCode 获取code,这个code可以拿到当前小程序用户在支付宝上的唯一用户id,
需要注意的是,这里的scopes 有2个值 auth_user(会出现授权弹窗) 和 auth_base(静默授权)、auth_zhima(获取芝麻信息)
my.getAuthCode({
scopes: ['auth_base'],
success: (result) => {
this.model.zfb_code=result.authCode
},
});
如果是auth_base 那么是获取不到用户其他信息的,只能获取到一个唯一的userid。因此如果想要拿用户头像名字这些信息,一定要使用弹窗授权auth_user。
获取手机号
然后通过my.getPhoneNumber可以得到加密后的字符串,将code和encryptedData发送给我们的后台服务器可以拿到对应的手机号。
<u-button @getphonenumber="onGetAuthorize"
open-type="getPhoneNumber" v-if="!pwdLogin" shape="circle"
color="#538BFC" text="支付宝授权登录" ></u-button>
onGetAuthorize(){
console.log('onGetAuthorize')
my.getPhoneNumber({
success: (res) => {
console.log('getPhoneNumber',res)
let data = JSON.parse(res.response)
let encryptedData=data.response
console.log('--data-',encryptedData)
},
fail: (res) => {
console.log(res);
console.log('getPhoneNumber_fail');
},
});
},
注意事项
支付宝小程序的配置相对于微信小程序要复杂一些,要在小程序账户后台配置好公钥,这一部分由后台开发去弄好。
其次,如果想要获取用户信息、号码都需要在后台申请,记得提前申请好。
总结
如果想要开发多平台的小程序,推荐使用uni-app,一套代码可以适配多平台,能为我们节省不少开发时间。支付宝登录流程本质跟微信小程序其实差不多,都是获取到对应的信息,存入我们自己的服务器,选择一个唯一id,根据业务进行扩展。