前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >支付宝授权登录淘宝_vue的登录实现

支付宝授权登录淘宝_vue的登录实现

作者头像
全栈程序员站长
发布2022-09-19 10:08:54
4850
发布2022-09-19 10:08:54
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

api接口文档:https://docs.open.alipay.com/289/105656

后台管理系统原本是用账号密码登录的,不过需求要改成支付宝授权,

前端仅仅需要改登录页,以及添加一个授权返回页

大致流程:访问首页,因为我们有分(测试,开发)环境的,所以访问支付宝地址以及backurl是从后台获取的

因为在支付宝授权的缓存暂无办法清除,可以搞个中转页,我就不写了。

授权页

代码语言:javascript
复制
<script>
  import { getZFBINfo } from 'api/login';
  export default {
    data() {
        return {}
    },
    methods: {
      handleLogin() {
          getZFBINfo().then((res) => {
            //backUrl是授权返回页(去后台调支付宝接口获取token和user_id,然后进行用户验证和其他逻辑处理)
            const backUrl = encodeURIComponent(res.backUrl)
           //url是跳转到支付宝登录页面,然后他会跳转到redirect_uri
            const url = res.url + '&scope=auth_base&redirect_uri='+backUrl
            window.location.href = url
          }).catch((res) => {
            console.log('error', res)
          })
      }
    },
    creatd() {
     //这里是一进页面就会加载的操作,例如执行handleLogin方法
     handleLogin();
   },
    destroyed() {}
  }
</script>

授权返回页
代码语言:javascript
复制
<script>
  import { getByAuthCode } from 'api/login';//这个方法是去后台接口调支付宝接口获取userid和token,然后进行业务逻辑的处理
  import { mapGetters } from 'vuex';
  import {
    setToken,
    removeToken
  } from 'utils/auth';
  export default {
    data() {
      return {}
    },
    computed: {
      ...mapGetters([
        'elements'
      ])
    },created() {
      this.getCode()
    }, methods: {

      getCode() {
       //获取当前页面的url
        let url = decodeURI(location.href)
        let theRequest = new Object()
        if (url.indexOf('?') !== -1) {
          let str = url.substr(1);
          let strs = str.split('&');
          for (let i = 0; i < strs.length; i++) {
            theRequest[strs[i].split('=')[0]] = decodeURIComponent(strs[i].split('=')[1]);
          }
        }
        if (theRequest.auth_code) {
          getByAuthCode(theRequest.auth_code).then((res)=>{
            //  获取到token
            if(res.data){
              setToken(res.data);
              this.$store.commit('SET_TOKEN', res.data);
              //进入首页
              this.$router.replace({path: '/dashboard'})
            }else{
              alert("用户不存在,请清除缓存重新登录");
             //如果有写中转页,可以调到中转页
              this.$router.push({path: `/login`})
            }
          }).catch((res) => {
            console.log('error', res)
          })
        }
      }
    }
  }
</script>
代码语言:javascript
复制
如果扫码登录跳转到这个地方
支付宝授权登录淘宝_vue的登录实现
支付宝授权登录淘宝_vue的登录实现

是没有在支付宝管理后台配置

支付宝授权登录淘宝_vue的登录实现
支付宝授权登录淘宝_vue的登录实现

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166681.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档