最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

vue怎么获得微信授权并登陆

来源:动视网 责编:小采 时间:2020-11-27 19:39:16
文档

vue怎么获得微信授权并登陆

vue怎么获得微信授权并登陆:这次给大家带来vue怎么获得微信授权并登陆,vue获得微信授权并登陆的注意事项有哪些,下面就是实战案例,一起来看一下。背景vue前后端分离开发微信授权场景app将商品分享到微信朋友圈或者分享给微信好友,用户点击页面时进行微信授权登陆,获取用户信息。问题
推荐度:
导读vue怎么获得微信授权并登陆:这次给大家带来vue怎么获得微信授权并登陆,vue获得微信授权并登陆的注意事项有哪些,下面就是实战案例,一起来看一下。背景vue前后端分离开发微信授权场景app将商品分享到微信朋友圈或者分享给微信好友,用户点击页面时进行微信授权登陆,获取用户信息。问题


然而我们的前台链接是这个鬼样子的,本身带参数,而且超长,what?微信可能不会接受我长这么丑。/(ㄒoㄒ)/~~

http://www.xxx.com/h5/product?id=6RedfM5O4xeyl0AmOwmyipkHr8AQCv-hYXZVAIFTwDXOsWSKqgu3VaCmaKSerBnacvWuzO3Zwdf8y%2F2K2lvqkluV6Ane4LCAKyPU2tPAPj%2FMF6F6xkzp27GqqpNya7HbdEA34qGQJvHIA9tlIMkeEWid1112b8oZuP3FQBwU%2F%2FMaSrovzQP6LlzWamyPnv0vMizu8uh0ItpJOQUV1m%2FtemF3U9KuHo8rXCw%3D

最终放弃了这个方案

3.考虑如何重定向我的前台地址,并且获取token

接下来就是我现在用的方法,bug还有很多,先分享一下我的方法,后期优化或有更好的方法再做修改
在main.js中路由全局钩子判断本地是不是有user_token,也就是微信授权后返回的token,如果没有token,并且当前的路由不是author(专门为了授权而生的页面),那就保存当前的url,比如www.xxx.com/h5/product?id=6RedfM5O4xeyl0AmOwm,然后进入author。那如果本地有token,就是用户之前授权拿到过token并且vuex里没有用户信息,那我就获取用户信息并保存在vuex中,这里遇到一个问题就是token会出现过期的情况,那我就删除了本地的user_token,window.localStorage.removeItem("user_token");刷新页面 router.go(0);这个时候就重新走了一遍如果没有token的情况。

 router.beforeEach((to, from, next) => {
 // 第一次进入项目
 let token = window.localStorage.getItem("user_token");
 
 if (!token && to.path != "/author") {
 window.localStorage.setItem("beforeLoginUrl", to.fullPath); // 保存用户进入的url
 next("/author");
 return false;
 } else if (token && !store.getters.userInfo) {
 //获取用户信息接口
 store
 .dispatch("GetUserInfo", {
 user_token: token
 })
 .catch(err => {
 window.localStorage.removeItem("user_token");
 router.go(0);
 return false;
 });
 }
 next();
 });

下面就是进入author.vue的逻辑,第一次进入author, www.xxxx.com/h5/author,判断链接有没有token参数,如果没有就跳微信授权,然后后台会重定向回来并携带token,如: www.xxxx.com/h5/author?token=xxxxxxxxx&msg=200

<template>
 <p>
授权中。。
 </p>
</template>
<script>
 
 import {
 getWxAuth
 } from '@/service/getData'
 import {
 GetQueryString 
 } from '@/utils/mixin';
 export default {
 data() {
 return {
 token: '',
 };
 },
 computed: {
 
 },
 created() {
 this.token = window.localStorage.getItem("user_token");
 //判断当前的url有没有token参数,如果不存在那就跳转到微信授权的url
 //就是前面说的ReturnGetCodeUrl方法
 
 if (!GetQueryString("token")) {
 this.ReturnGetCodeUrl();
 } else {
 //如果有token,如http://www.xxxx.com/h5/author?token=xxxxxxxxx&msg=200,这里的参数就是后台重定向到前台http://www.xxxx.com/h5/author,并携带的参数。这样就可以拿到我们想要的token了
 //判断一下后台返回的状态码msg,因为可能出现微信拿不到token的情况
 let msg = GetQueryString("msg")
 if (msg = 200) {
 this.token = GetQueryString("token");
 //存储token到本地
 window.localStorage.setItem("user_token", this.token);
 //获取beforeLoginUrl,我们的前端页面
 let url = window.localStorage.getItem("beforeLoginUrl");
 //跳转
 this.$router.push(url);
 //删除本地beforeLoginUrl
 removeLocalStorage("beforeLoginUrl");
 }else{
 //msg不是200的情况,可能跳到404的错误页面
 }
 }
 },
 methods: {
 
 async ReturnGetCodeUrl() {
 let {
 data
 } = await getWxAuth({});
 if (data.status == 200) {
 
 window.location.href = data.url;
 }
 },
 
 },
 watch: {},
 components: {},
 mounted: function () {}
 }
</script>
<style lang='scss' scoped>
</style>

GetQueryString方法

mixin.js

export const GetQueryString = name => {
 var url = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
 var newUrl = window.location.search.substr(1).match(url);
 if (newUrl != null) {
 return unescape(newUrl[2]);
 } else {
 return false;
 }
};

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

jQuery做出合并/追加数组除重功能

vue-cli组件导入使用步骤详解

文档

vue怎么获得微信授权并登陆

vue怎么获得微信授权并登陆:这次给大家带来vue怎么获得微信授权并登陆,vue获得微信授权并登陆的注意事项有哪些,下面就是实战案例,一起来看一下。背景vue前后端分离开发微信授权场景app将商品分享到微信朋友圈或者分享给微信好友,用户点击页面时进行微信授权登陆,获取用户信息。问题
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top