700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 微信 支付宝授权

微信 支付宝授权

时间:2023-10-18 16:27:27

相关推荐

微信 支付宝授权

微信、支付宝授权的几个步骤:

1、调用授权链接(需要appId和redirect_url),如果未授权会弹出授权窗口,授权完成跳转回调地址;如果已经授权,会直接跳转到回调地址;回调地址中带有code;

2、通过code调后端接口换openId

3、拿到openId后,调用通过openId调后端微信登录接口

几个问题:

1、redirect_url实现原理

答:redirect_url是回调地址,那么是如何实现回调的呢?代码中window.loction.href跳转后,都跳出去了,怎么又回来了,而且还打开了一个页面呢?我的理解是这样的,不对的话请万能的网友帮我解答。比如微信,我们已经登录,跳转到对应的授权链接后,微信会判断该微信用户有没有授权,如果没授权会出现授权弹框(此时的弹框是在微信这边弹框,弹框不在我们代码中,无需代码支持),授权完成后,微信后台会让给该用户打开对应的回调地址(地址中包含我们需要的code);

然后我们通过回调url中取到code,拿到code后就能获取openId(支付宝中的auth_code,通过auth_code获取userid)。

通过code获取openId,前后端都获取了openId后,就能通过openId做用户数据的绑定和查询了。

2、回调地址为什么不直接返回openId,而是返回code,需要再次获取openId

答:微信授权和支付宝授权:授权主要就是获取微信的code和支付宝的auth_code,所以能拿到code证明已经授权,然后通过code获取openId。

微信授权对应链接:

window.location.href = 'https://open./connect/oauth2/authorize?appid=' + APPID + '&redirect_uri=' + encodeURIComponent(local) + '&response_type=code&scope=snsapi_base&state=#wechat_redirect'

支付宝授权对应链接:

window.location.href = '/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL'

微信H5授权登录分两种:

① 静默授权:snsapi_base,没有弹窗,只能获取用户的openId。

②非静默授权:snsapi_userinfo,有弹框弹出需要用户手动点击确认授权。可以获取openId,用户的头像、昵称等

完整代码如下

// 强制关注公众号,获取openidgetCode = function () {if (sessionStorage.getItem("openid")&&sessionStorage.getItem("openid")!="undefined") {return false;}var code = getUrlParam('code') // 截取路径中的code,如果没有就去微信授权,如果已经获取到了就直接传code给后台获取openIdvar local = window.location.href;var APPID = 'xxx';if (code == null || code === '') {window.location.href = 'https://open./connect/oauth2/authorize?appid=' + APPID + '&redirect_uri=' + encodeURIComponent(local) + '&response_type=code&scope=snsapi_base&state=#wechat_redirect'} else {getOpenId(code) //把code传给后台获取用户信息}}//把code传给后台,得到openidgetOpenId = function (code) {$.ajax({type: 'POST',dataType: 'json',url: 'xxx',data: { code: code },success: function (res) {if (res.status == -1) {// 提示没有关注公众号 没有关注公众号跳转到关注公众号页面console.log('您还未关注公众号喔');//二维码弹窗$('.openPopup').click();return;} else {// 本地存储这个openid,并刷新页面sessionStorage.setItem("openid", res.data.openid);location.reload();}}});}//获取地址栏的参数getUrlParam= function (name) {var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");var r = window.location.search.substr(1).match(reg);if (r != null) return unescape(r[2]); return null;}//页面执行调用getCode();

微信公众号h5获取用户openId的方法和步骤_江湖行骗老中医的博客-CSDN博客_微信公众号网页获取openid

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。