网页版的支付宝授权登录(vue+java)

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

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

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

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

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

后端可以参考

官方文档:PC 网页内获取用户信息 | 网页&移动应用

支付宝支付-手机浏览器H5支付 - niceyoo - 博客园 

支付宝如何获取buyer_id (即user_id)。支付宝服务窗(生活号)支付方式_Emine-CSDN博客_支付宝获取userid

支付宝 生活号 获取 userId 和 生活号支付 - 张玉坤 - 博客园

 

 前端授权页

<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>
 前端授权返回页
<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>
如果扫码登录跳转到这个地方

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值