# 第三方登录组件功能实现
遇到了一个小坑, 组件使用onLoad无效, 换成mouted
<template>
<view class="other-login u-f-ac">
<block v-for="(item, index) in providerList" :key="index">
<view class=" u-f-ajc u-f1" @tap="tologin(item)">
<view class="icon iconfont u-f-ajc" :class="['icon-' + item.icon]"></view>
</view>
</block>
</view>
</template>
<script>
export default {
data() {
return {
providerList: []
}
},
mounted() {
this.getLoginAuth();
},
methods: {
// 获取当前登录渠道
getLoginAuth(){
uni.getProvider({
service: 'oauth',
success: (result) => {
this.providerList = result.provider.map((value) => {
let providerName = '';
let icon='';
switch (value) {
case 'weixin':
providerName = '微信登录';
icon='weixin';
break;
case 'qq':
providerName = 'QQ登录';
icon='QQ';
break;
case 'sinaweibo':
providerName = '新浪微博登录';
icon='xinlangweibo';
break;
// #ifdef MP-ALIPAY
case 'alipay':
providerName = '支付宝登录';
icon='changyonglogo30';
break;
// #endif
}
return {
name: providerName,
icon:icon,
id: value
}
});
},
fail: (error) => {
console.log('获取登录通道失败', error);
}
});
},
// 登录
tologin(provider) {
uni.login({
provider: provider.id,
// #ifdef MP-ALIPAY
scopes: 'auth_user', //支付宝小程序需设置授权类型
// #endif
success: (res) => {
console.log('login success:', res);
console.log('登录成功')
},
fail: (err) => {
console.log('login fail:', err);
}
});
}
}
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81