uniapp 支付宝小程序手机号登陆

开发支付宝小程序,在登录的时候,由于需要手机号登陆,所以需要在支付宝小程序后台去申请手机号登陆权限。

支付宝小程序登陆组件设置

<!-- #ifdef  MP-ALIPAY  -->
<button class="login" type="default" open-type="getAuthorize" @getAuthorize="onGetAuthorize" @error="onAuthError" scope='phoneNumber'>授权手机号一键登录</button>
<!-- #endif -->

支付宝登陆官方代码、

onGetAuthorize:function() {
		  return new Promise((resolve, reject) => {
			my.getPhoneNumber({
			  scopes: "auth_user",
			  success: res => {
				  var response = JSON.parse(res.response);
				  let encry =  response.response;  //获取 encry  微信小程序叫这个名字
				 this.zhifubao(encry);  // 调取这个自定义方法 
				resolve(res);
			  },
			  fail: res => {
				reject(res);
			  }
			});
		  });
		},

支付宝方法

//支付宝登录
		zhifubao:function(encry){
			var that = this;
			let openId = that.openId;  //进入小程序时获取code 请求的openid
			let key = that.key;        // 请求的sessionKey 保存本地拿过来的
			var loginUrl = getApp().globalData.url + "/login/wxLogin";  //请求路径
			uni.request({
				url:loginUrl,
				data:{
					encryptedData: encry,  //这个是上传过来的值
					sessionKey: key,       //b本地请求的
					open_id:openId,        //本地sessionKey 
					// 其他参数跟后台需求传
				},
				success: (res) => {
					console.log(res,'login')
				    //自己的逻辑处理
				},
				fail: (res) => {
					console.log(res,"error")
				}
			})
		},

这样就能登陆成功了

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
根据提供的引用内容,uniapp微信小程序可以通过以下步骤实现手机号一键登录: 1.在uniapp项目中安装并引入wx-server-sdk模块,该模块可以用于调用云函数。 2.在云函数中使用wx-server-sdk模块的getPhoneNumber方法获取用户手机号码。 3.在小程序端使用wx.login方法获取用户的code。 4.将获取到的code和encryptedData、iv等信息传递给云函数。 5.在云函数中使用code、encryptedData、iv等信息调用微信提供的解密算法,获取用户的手机号码。 6.将获取到的手机号码返回给小程序端,实现一键登录功能。 以下是示例代码: 1.云函数代码: ```javascript const cloud = require('wx-server-sdk') cloud.init() const wxContext = cloud.getWXContext() const appid = 'your appid' // 替换成自己的appid const appsecret = 'your appsecret' // 替换成自己的appsecret const wxServerSDK = require('wx-server-sdk') wxServerSDK.init({ env: wxContext.ENV, appid: appid, secret: appsecret }) exports.main = async (event, context) => { const wxContext = cloud.getWXContext() const { code, encryptedData, iv } = event const session = await wxServerSDK.cloud.callFunction({ name: 'login', data: { code: code } }) const sessionKey = session.result.session_key const phone = await wxServerSDK.cloud.callFunction({ name: 'getPhoneNumber', data: { appid: appid, sessionKey: sessionKey, encryptedData: encryptedData, iv: iv } }) return phone.result } ``` 2.小程序端代码: ```javascript // 获取用户手机号码 getPhoneNumber: function (e) { wx.cloud.callFunction({ name: 'getPhoneNumber', data: { code: this.globalData.code, encryptedData: e.detail.encryptedData, iv: e.detail.iv }, success: res => { console.log(res.result) // TODO: 处理获取到的手机号码 }, fail: err => { console.error(err) } }) } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值