记录支付宝小程序登录流程

1,358 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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>

image.png

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,根据业务进行扩展。