uni-app關於小程序及app端第三方微信登錄問題

1.第一次作第三方微信登錄,因此在這方面話太多時間了,主要是在獲取code的時候感受頭痛,uni-app沒有說明如何獲取code,後來在網上搜索諸多信息後終於解決了問題html

uni-app在app端第三方微信登錄時要獲取code再傳給後端,後端根據code向微信發送登錄請求:html5

// #ifdef APP-PLUS
        login() {
            var it=this;
            var  getAppid = plus.runtime.appid;
            console.log('app端登錄')
            uni.login({
              provider: 'weixin',
              success: function (loginRes) {
                console.log(JSON.stringify(loginRes.authResult));
                uni.showModal({
                    content: JSON.stringify(loginRes.authResult),
                    cancelText: "我再想一想",
                    cancelColor: "#999",
                    confirmText: "轉讓",
                    confirmColor: "#DEC17C",
                    success: function(res) {
                        
                    }
                })
              }
            });
            var weixinService = null;
            // http://www.html5plus.org/doc/zh_cn/oauth.html#plus.oauth.getServices
            plus.oauth.getServices(function(services) {
                console.log(312589340656548)
                console.log(services)
                if (services && services.length) {
                    for (var i = 0, len = services.length; i < len; i++) {
                        if (services[i].id === 'weixin') {
                            weixinService = services[i];
                            console.log('受權對象')
                            console.log(weixinService)
                            break;
                        }
                    }
                    if (!weixinService) {
                        console.log('沒有微信登陸受權服務');
                        return;
                    }
                    // http://www.html5plus.org/doc/zh_cn/oauth.html#plus.oauth.AuthService.authorize
 weixinService.authorize(function(event) { //此處獲取code的關鍵
                        console.log(event)
                        console.log(event.code,'此次是真的受權後返回的code')
                        it.weixinCode = event.code; //用戶換取 access_token 的 code
                        // it.requestLogin();
                        let data={code: it.weixinCode};
                        it.$api.user.login.getWeiXinCode(data).then(function(userInfo) {
                            console.log('是否走到這裏')
                                console.log('第三方登陸受權',it.weixinCode)
                                console.log('第三方登陸受權1111',userInfo)
                                it.$store.commit('isLogged', true);
                                it.$store.commit('user', {});
                                it.$store.commit('user', userInfo.data);
                                uni.navigateBack()
                            }).catch(res => {
                            console.log(res)        
                                });
                        
                    }, function(error) {
                        console.error('authorize fail:' + JSON.stringify(error));
                    }, {
                        // http://www.html5plus.org/doc/zh_cn/oauth.html#plus.oauth.AuthOptions
                        appid: getAppid, //開放平臺的應用標識。暫時填個假的充數,僅作演示。
                    });
                } else {
                    console.log('無可用的登陸受權服務');
                }
            }, function(error) {
                console.error('getServices fail:' + JSON.stringify(error));
            });
        },
        // #endif

2. 微信小程序登錄方式 :小程序

// #ifdef MP-WEIXIN
        getUserInfo(v) {
            let vm = this;
            uni.login({
                provider: 'weixin',
                success: function(loginRes) {
                    uni.getUserInfo({
                        success: function(res) {
                            vm.$api.user.login.weChatAppletLogin(loginRes.code,res.encryptedData,res.iv)
                                .then(function(userInfo) {
                                    vm.$store.commit('isLogged', true);
                                    vm.$store.commit('user', {});
                                    vm.$store.commit('user', userInfo.data);
                                    uni.navigateBack()
                                }).catch(res => {
                                });
                        },
                        fail: function(res) {
                            vm.$store.commit('isLogged', false);
                        }
                    });
                },
                fail: function(res) {
                }
            });
        }
        // #endif
相關文章
相關標籤/搜索