✨ 微信小程序登录:手动登录完成
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
labelWidth="140"
|
||||
labelAlign="center"
|
||||
>
|
||||
<!-- 获取头像昵称:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/userProfile.html -->
|
||||
<uni-forms-item name="avatar" label="头像">
|
||||
<button
|
||||
class="ss-reset-button avatar-btn"
|
||||
@@ -29,8 +30,8 @@
|
||||
:src="sheep.$url.cdn(state.model.avatar)"
|
||||
mode="aspectFill"
|
||||
@tap="sheep.$router.go('/pages/user/info')"
|
||||
></image>
|
||||
<text class="cicon-forward"></text>
|
||||
/>
|
||||
<text class="cicon-forward" />
|
||||
</button>
|
||||
</uni-forms-item>
|
||||
<uni-forms-item name="nickname" label="昵称">
|
||||
@@ -39,10 +40,8 @@
|
||||
placeholder="请输入昵称"
|
||||
v-model="state.model.nickname"
|
||||
:inputBorder="false"
|
||||
>
|
||||
</uni-easyinput>
|
||||
/>
|
||||
</uni-forms-item>
|
||||
|
||||
<view class="foot-box">
|
||||
<button class="ss-reset-button authorization-btn" @tap="onConfirm"> 确认授权 </button>
|
||||
</view>
|
||||
@@ -51,9 +50,11 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { computed, watch, ref, reactive, unref } from 'vue';
|
||||
import { computed, ref, reactive } from 'vue';
|
||||
import sheep from '@/sheep';
|
||||
import { showAuthModal, closeAuthModal } from '@/sheep/hooks/useModal';
|
||||
import { closeAuthModal } from '@/sheep/hooks/useModal';
|
||||
import FileApi from '@/sheep/api/infra/file';
|
||||
import UserApi from '@/sheep/api/member/user';
|
||||
|
||||
const props = defineProps({
|
||||
agreeStatus: {
|
||||
@@ -72,23 +73,26 @@
|
||||
nickname: userInfo.value.nickname,
|
||||
avatar: userInfo.value.avatar,
|
||||
},
|
||||
rules: {
|
||||
|
||||
},
|
||||
rules: {},
|
||||
disabledStyle: {
|
||||
color: '#999',
|
||||
disableColor: '#fff',
|
||||
},
|
||||
});
|
||||
// 选择头像
|
||||
|
||||
// 选择头像(来自微信)
|
||||
function onChooseAvatar(e) {
|
||||
const tempUrl = e.detail.avatarUrl || '';
|
||||
uploadAvatar(tempUrl);
|
||||
}
|
||||
|
||||
// 选择头像(来自文件系统)
|
||||
async function uploadAvatar(tempUrl) {
|
||||
if (!tempUrl) return;
|
||||
let { path } = await sheep.$api.app.upload(tempUrl, 'ugc');
|
||||
state.model.avatar = path;
|
||||
if (!tempUrl) {
|
||||
return;
|
||||
}
|
||||
let { data } = await FileApi.uploadFile(tempUrl);
|
||||
state.model.avatar = data;
|
||||
}
|
||||
|
||||
// 确认授权
|
||||
@@ -103,13 +107,16 @@
|
||||
sheep.$helper.toast('请选择头像');
|
||||
return;
|
||||
}
|
||||
const { error, msg } = await sheep.$api.user.updateMpUserInfo(model);
|
||||
if (error === 0) {
|
||||
// 发起更新
|
||||
const { code } = await UserApi.updateUser({
|
||||
avatar: state.model.avatar,
|
||||
nickname: state.model.nickname,
|
||||
});
|
||||
// 更新成功
|
||||
if (code === 0) {
|
||||
sheep.$helper.toast('授权成功');
|
||||
await sheep.$store('user').getInfo();
|
||||
closeAuthModal();
|
||||
}else {
|
||||
sheep.$helper.toast(msg);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -32,8 +32,9 @@
|
||||
<!-- 立即注册&快捷登录 TextButton -->
|
||||
<view v-if="sheep.$platform.name === 'WechatMiniProgram'" class="ss-flex register-box">
|
||||
<view class="register-title">还没有账号?</view>
|
||||
<button class="ss-reset-button register-btn" @tap="showAuthModal('smsRegister')">立即注册</button
|
||||
>
|
||||
<button class="ss-reset-button register-btn" @tap="showAuthModal('smsRegister')">
|
||||
立即注册
|
||||
</button>
|
||||
<view class="or-title">或</view>
|
||||
<button class="ss-reset-button login-btn" @tap="thirdLogin('wechat')">快捷登录</button>
|
||||
<view class="circle"></view>
|
||||
@@ -147,7 +148,7 @@
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
// 第三方授权登陆
|
||||
// 第三方授权登陆(微信小程序、Apple)
|
||||
const thirdLogin = async (provider) => {
|
||||
if (!state.protocol) {
|
||||
currentProtocol.value = true;
|
||||
@@ -160,17 +161,9 @@
|
||||
const loginRes = await sheep.$platform.useProvider(provider).login();
|
||||
if (loginRes) {
|
||||
closeAuthModal();
|
||||
const userInfo = await sheep.$store('user').getInfo();
|
||||
// 触发小程序授权信息弹框
|
||||
// #ifdef MP-WEIXIN
|
||||
if (userInfo.third_oauth.length > 0) {
|
||||
const mpThirdOauthInfo = userInfo.third_oauth.find(
|
||||
(item) => item.platform === 'miniProgram',
|
||||
);
|
||||
if (mpThirdOauthInfo && !mpThirdOauthInfo.nickname) {
|
||||
showAuthModal('mpAuthorization');
|
||||
}
|
||||
}
|
||||
showAuthModal('mpAuthorization');
|
||||
// #endif
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user