|
@@ -1,92 +1,112 @@
|
|
|
<template>
|
|
|
- <view>
|
|
|
- <u-toast ref="uToast" />
|
|
|
- </view>
|
|
|
+ <view>
|
|
|
+ <u-toast ref="uToast" />
|
|
|
+ </view>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import getUrlParams from './../../utils/getUrlParams.js';
|
|
|
-export default {
|
|
|
- data() {
|
|
|
- return {
|
|
|
- backUrl: '',
|
|
|
- code: ''
|
|
|
- };
|
|
|
- },
|
|
|
- onLoad(page) {
|
|
|
- let local = window.location.href;
|
|
|
- let locationLocaturl = window.location.search;
|
|
|
- // 微信返回的回调地址
|
|
|
- let backUrl = local.split('backUrl=')[1];
|
|
|
- if (backUrl) {
|
|
|
- this.backUrl = decodeURIComponent(backUrl);
|
|
|
- }
|
|
|
- console.log('backUrl', decodeURIComponent(backUrl));
|
|
|
- let code = getUrlParams(locationLocaturl, 'code');
|
|
|
- console.log('code', code);
|
|
|
- if (code) {
|
|
|
- this.code = code;
|
|
|
- this.handleGetWXInfo(this.code);
|
|
|
- } else {
|
|
|
- window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${this.config.wxAppid}&redirect_uri=${encodeURIComponent(
|
|
|
+ import getUrlParams from './../../utils/getUrlParams.js';
|
|
|
+ export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ backUrl: '',
|
|
|
+ code: ''
|
|
|
+ };
|
|
|
+ },
|
|
|
+ onLoad(page) {
|
|
|
+ let local = location.href;
|
|
|
+ let locationLocaturl = location.search;
|
|
|
+ // 微信返回的回调地址
|
|
|
+ let backUrl = local.split('backUrl=')[1];
|
|
|
+ if (backUrl) {
|
|
|
+ this.backUrl = decodeURIComponent(backUrl);
|
|
|
+ }
|
|
|
+ console.log('backUrl', decodeURIComponent(backUrl));
|
|
|
+ let code = getUrlParams(locationLocaturl, 'code');
|
|
|
+ console.log('code', code);
|
|
|
+ if (code) {
|
|
|
+ this.code = code;
|
|
|
+ let wechatLoginKey = localStorage.getItem('wechatLoginKey')
|
|
|
+ if (wechatLoginKey) {
|
|
|
+ wechatLoginKey = JSON.parse(wechatLoginKey);
|
|
|
+ if (code === wechatLoginKey.code) {
|
|
|
+ this.getToken(wechatLoginKey.openId);
|
|
|
+ } else {
|
|
|
+ this.handleGetWXInfo(this.code);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.handleGetWXInfo(this.code);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${this.config.wxAppid}&redirect_uri=${encodeURIComponent(
|
|
|
local
|
|
|
- )}&response_type=code&scope=snsapi_userinfo&#wechat_redirect`;
|
|
|
- }
|
|
|
- },
|
|
|
- methods: {
|
|
|
- // 通过code获取 openId等用户信息
|
|
|
- handleGetWXInfo(code) {
|
|
|
- uni.showLoading({
|
|
|
- title: '加载中'
|
|
|
- });
|
|
|
- this.$u.api
|
|
|
- .getWXInfo(code)
|
|
|
- .then((res) => {
|
|
|
- if (res.code === 200) {
|
|
|
- this.$u.vuex('vuex_wxinfo', res.data);
|
|
|
- this.getToken(res.data.openId);
|
|
|
- } else {
|
|
|
- this.$refs.uToast.show({
|
|
|
- title: res.msg || '获取用户信息失败!',
|
|
|
- type: 'error'
|
|
|
- });
|
|
|
- uni.hideLoading();
|
|
|
- }
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- uni.hideLoading();
|
|
|
- });
|
|
|
- },
|
|
|
- /**
|
|
|
- * 通过openId获取token
|
|
|
- * @param {Object} openId
|
|
|
- */
|
|
|
- getToken(openId) {
|
|
|
- this.$u.api.codeV2Api.sendSmsCodeV2api({ openId }).then((res) => {
|
|
|
- if (res.code === 200) {
|
|
|
- this.$u.vuex('vuex_user', res.data);
|
|
|
- this.$u.vuex('vuex_token', res.data.accessToken);
|
|
|
- this.$u.vuex('vuex_hasLogin', true);
|
|
|
- if (res.data.needVerify) {
|
|
|
- localStorage.setItem('backUrl', this.backUrl);
|
|
|
- this.$u.route({
|
|
|
- url: 'pages/center/phoneLogin/phoneLogin'
|
|
|
- });
|
|
|
- } else {
|
|
|
- location.href = this.backUrl;
|
|
|
- }
|
|
|
- uni.hideLoading();
|
|
|
- } else {
|
|
|
- this.$refs.uToast.show({
|
|
|
- title: res.msg || '获取用户信息失败!',
|
|
|
- type: 'error'
|
|
|
- });
|
|
|
- uni.hideLoading();
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
-};
|
|
|
+ )}&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect`;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ // 通过code获取 openId等用户信息
|
|
|
+ handleGetWXInfo(code) {
|
|
|
+ uni.showLoading({
|
|
|
+ title: '加载中'
|
|
|
+ });
|
|
|
+ this.$u.api
|
|
|
+ .getWXInfo(code)
|
|
|
+ .then((res) => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.$u.vuex('vuex_wxinfo', res.data);
|
|
|
+ localStorage.setItem('wechatLoginKey', JSON.stringify({
|
|
|
+ code,
|
|
|
+ openId: res.data.openId
|
|
|
+ }))
|
|
|
+ this.getToken(res.data.openId);
|
|
|
+ } else {
|
|
|
+ this.$refs.uToast.show({
|
|
|
+ title: res.msg || '获取用户信息失败!',
|
|
|
+ type: 'error'
|
|
|
+ });
|
|
|
+ uni.hideLoading();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ uni.hideLoading();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 通过openId获取token
|
|
|
+ * @param {Object} openId
|
|
|
+ */
|
|
|
+ getToken(openId) {
|
|
|
+ this.$u.api.codeV2Api.sendSmsCodeV2api({
|
|
|
+ openId
|
|
|
+ }).then((res) => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.$u.vuex('vuex_token', res.data.accessToken);
|
|
|
+ this.$u.vuex('vuex_hasLogin', true);
|
|
|
+ if (res.data.needVerify) {
|
|
|
+ localStorage.setItem('backUrl', this.backUrl);
|
|
|
+ this.$u.route({
|
|
|
+ url: 'pages/center/phoneLogin/phoneLogin'
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.$u.vuex('vuex_user', res.data);
|
|
|
+ if (this.backUrl.indexOf('wechatLogin') > (-1)) {
|
|
|
+ location.href = '/'
|
|
|
+ } else {
|
|
|
+ location.href = this.backUrl;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ uni.hideLoading();
|
|
|
+ } else {
|
|
|
+ this.$refs.uToast.show({
|
|
|
+ title: res.msg || '获取用户信息失败!',
|
|
|
+ type: 'error'
|
|
|
+ });
|
|
|
+ uni.hideLoading();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
</script>
|
|
|
|
|
|
<style></style>
|