| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | 
							- <template>
 
- 	<view>
 
- 		<page-head :title="title"></page-head>
 
- 		<view class="uni-padding-wrap">
 
- 			<view style="background:#FFF; padding:40rpx;">
 
- 				<block v-if="hasUserInfo === false">
 
- 					<view class="uni-hello-text uni-center">
 
- 						<text>请点击下方按钮获取用户头像及昵称或手机号</text>
 
- 					</view>
 
- 				</block>
 
- 				<block v-if="hasUserInfo === true">
 
- 					<view class="uni-h4 uni-center uni-common-mt">{{userInfo.nickName || userInfo.nickname || userInfo.gender || userInfo.email || userInfo.phoneNumber}}</view>
 
- 					<view v-if="userInfo.avatarUrl || userInfo.avatar_url " style="padding:30rpx 0; text-align:center;">
 
- 						<image class="userinfo-avatar" :src="userInfo.avatarUrl||userInfo.avatar_url"></image>
 
- 					</view>
 
- 				</block>
 
- 			</view>
 
- 			<view class="uni-btn-v">
 
- 				<!-- #ifdef APP-PLUS || MP-ALIPAY || MP-TOUTIAO -->
 
- 				<button type="primary" :loading="btnLoading" @click="getUserInfo">获取用户信息</button>
 
- 				<!-- #endif -->
 
- 				<!-- #ifdef MP-WEIXIN || MP-BAIDU || MP-QQ  || MP-JD -->
 
- 				<button type="primary" open-type="getUserInfo" @getuserinfo="mpGetUserInfo">获取用户信息</button>
 
- 				<!-- #endif -->
 
- 				<button @click="clear">清空</button>
 
- 			</view>
 
- 		</view>
 
- 	</view>
 
- </template>
 
- <script>
 
- 	import {
 
- 		mapState,
 
- 		mapMutations,
 
- 		mapActions
 
- 	} from 'vuex'
 
- 	export default {
 
- 		data() {
 
- 			return {
 
- 				title: 'getUserInfo',
 
- 				hasUserInfo: false,
 
- 				userInfo: {},
 
- 				btnLoading: false
 
- 			}
 
- 		},
 
- 		computed: {
 
- 			...mapState([
 
- 				'loginProvider',
 
- 				'isUniverifyLogin'
 
- 			])
 
- 		},
 
- 		methods: {
 
- 			...mapActions(['getPhoneNumber']),
 
- 			// 获取用户信息 API 在小程序可直接使用,在 5+App 里面需要先登录才能调用
 
- 			getUserInfo() {
 
- 				this.btnLoading = true;
 
- 				if (this.isUniverifyLogin) {
 
- 					// 一键登录
 
- 					this.getPhoneNumber(uni.getStorageSync('univerifyInfo')).then(phoneNumber => {
 
- 						this.hasUserInfo = true;
 
- 						this.userInfo = {
 
- 							phoneNumber
 
- 						};
 
- 					}).catch(err => {
 
- 						console.error('getUserInfo fail:', err);
 
- 						this.hasUserInfo = false;
 
- 					}).finally(() => {
 
- 						this.btnLoading = false;
 
- 					})
 
- 					return;
 
- 				}
 
- 				if(this.loginProvider === 'apple'){
 
- 					const nickname = uni.getStorageSync('apple_nickname')
 
- 					if(nickname){
 
- 						this.hasUserInfo = true;
 
- 						this.userInfo = { nickName:nickname }
 
- 						this.btnLoading = false;
 
- 						return;
 
- 					}
 
- 				}
 
- 				uni.getUserInfo({
 
- 					provider: this.loginProvider,
 
- 					success: (result) => {
 
- 						this.hasUserInfo = true;
 
- 						this.userInfo = result.userInfo;
 
- 					},
 
- 					fail: (error) => {
 
- 						console.log('getUserInfo fail', error);
 
- 						let content = error.errMsg;
 
- 						if (~content.indexOf('uni.login')) {
 
- 							content = '请在登录页面完成登录操作';
 
- 						}
 
- 						// #ifndef APP-PLUS
 
- 						uni.getSetting({
 
- 							success: (res) => {
 
- 								let authStatus = res.authSetting['scope.userInfo'];
 
- 								if (!authStatus) {
 
- 									uni.showModal({
 
- 										title: '授权失败',
 
- 										content: 'Hello uni-app需要获取您的用户信息,请在设置界面打开相关权限',
 
- 										success: (res) => {
 
- 											if (res.confirm) {
 
- 												uni.openSetting()
 
- 											}
 
- 										}
 
- 									})
 
- 								} else {
 
- 									uni.showModal({
 
- 										title: '获取用户信息失败',
 
- 										content: '错误原因' + content,
 
- 										showCancel: false
 
- 									});
 
- 								}
 
- 							}
 
- 						})
 
- 						// #endif
 
- 						// #ifdef APP-PLUS
 
- 						uni.showModal({
 
- 							title: '获取用户信息失败',
 
- 							content: '错误原因' + content,
 
- 							showCancel: false
 
- 						});
 
- 						// #endif
 
- 					},
 
- 					complete: () => {
 
- 						this.btnLoading = false;
 
- 					}
 
- 				});
 
- 			},
 
- 			mpGetUserInfo(result) {
 
- 				console.log('mpGetUserInfo', result);
 
- 				if (result.detail.errMsg !== 'getUserInfo:ok') {
 
- 					uni.showModal({
 
- 						title: '获取用户信息失败',
 
- 						content: '错误原因' + result.detail.errMsg,
 
- 						showCancel: false
 
- 					});
 
- 					return;
 
- 				}
 
- 				this.hasUserInfo = true;
 
- 				if(result.detail && result.detail.userInfo){
 
- 					this.userInfo = result.detail.userInfo;
 
- 				}else{
 
- 					// #ifdef MP-JD
 
- 					this.userInfo = result.detail.user_info;
 
- 					// #endif
 
- 				}
 
- 			},
 
- 			clear() {
 
- 				this.hasUserInfo = false;
 
- 				this.userInfo = {};
 
- 			}
 
- 		}
 
- 	}
 
- </script>
 
- <style>
 
- 	.userinfo-avatar {
 
- 		border-radius: 128rpx;
 
- 		width: 128rpx;
 
- 		height: 128rpx;
 
- 	}
 
- </style>
 
 
  |