Uniapp苹果登录sign in Apple
前提:软件内,如果已经实现第三方登录,必须也有sign in Apple功能,否则审核会不通过
准备工作:uniapp自带sign in Apple必须使用自定义基座打包(也就是说可以使用云打包)
开工:
  1. 找到项目的配置文件manifest.json,依次找到 [App模块配置]-[OAuth(登录授权)]-[苹果登录],安装sign in Apple模块

  2. 云打包,找到顶部工具栏[发行]-[云打包],需要提供对应的证书;注意:必须把测试的手机对应的IOS的UDID添加到对应证书,否则后续会报错 “安装失败 return code=-402620395”;获取UDID可通过这个网站获取,很方便,https://www.pgyer.com/tools/udid;

  3. 功能实现

    1. iOS13+ 系统才支持苹果登录,因此需要判断用户设备类型和系统版本

      uni.getSystemInfo({
      				success:(res) => {
      					// console.log("手机系统信息",res)
      					this.system = res.system  // 14.4.1
      					this.platform = res.platform  //ios
      				}
      			})
      
    2. 实现登录,向后台发送请求;苹果登录,默认是不共享电子邮箱,也就是默认获取不到用户的电子邮箱;只有用户选择了共享电子邮箱,才获取得到电子邮箱;

      LoginForApple() {
      				let that = this 
      				uni.getProvider({
                          //获取第三方登录类型
      					service: 'oauth',
      					success: function (res) {
      						// console.log(res.provider)
                              //判断为苹果登录
      						if(~res.provider.indexOf('apple')) {
      							uni.login({
      								provider: 'apple',
      								success: loginRes => {
      									uni.getUserInfo({
      										provider: 'apple',
      										success: userInfoRes => {
      											// console.log('user.userInfo',userInfoRes)
      											let user = userInfoRes.userInfo
      											let heading = 'http://cdn.kadiantexiao.com/e3729201908141701291608.jpg'
      											// 判断用户是不是选择共享邮箱 
      											let email = ""
      											if(user.email){
      												email = user.email
      											}else{
      												email = ""
      											}
      											// console.log('用户邮箱',email)
      											let data = {type:'5',openid:user.openId,heading:heading,nick:'Lonely',email:email}
      											applelogin(data).then(res=>{
      												console.log(res.data)
      												that.saveData(res.data)
      												// console.log('apple登录数据存成功')
      												that.$emit('closelogin',that.closelogin)
      											}).catch(err=>{
      												console.log(err)
      											})
      										}
      									})
      								},
      								fail: err => {
      									console.log('apple登录失败' + JSON.stringify(err))
      									uni.showToast({
      										title:'登录失败',
      										icon:'none'
      									})
      								}
      							})
      						}
      					},
      					fail: err => {
      						uni.showToast({
      							title:'登录失败',
      							icon:'none'
      						})
      					}
      				})
      			},
      

如有其他问题,请私聊我好了

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐