当前位置:   article > 正文

网页授权与APP授权,H5开发使用微信Jssdk拉起网页授权详细步骤(vue2)_微信网页授权api

微信网页授权api

先看微信开发文档步骤:

1 第一步:用户同意授权,获取code

2 第二步:通过code换取网页授权access_token

3 第三步:刷新access_token(如果需要)

4 第四步:拉取用户信息(需scope为 snsapi_userinfo)

5 附:检验授权凭证(access_token)是否有效

6 调用频率限制

我的代码流程如下(在HOME.VUE或者App.vue文件里):

1.首先需要下载

npm i   weixin-js-sdk 

2.在项目中引用后,在如下先操作(在vue的created里面拿到后端返回的时间戳):

我这边权限签名,时间戳和随机串是后端更具微信的权限签名算法生成的,微信算法链接如下

概述 | 微信开放文档

  1. let url = location.href;
  2. // //获取timestamp和nonceStr
  3. axios
  4. .get("https://api/wx/jssk", { params: { url } })
  5. .then((res) => {
  6. //获取时间戳,和签名
  7. if (res.status == 200) {
  8. this.nonceStr = res.data.nonceStr;
  9. this.timestamp = res.data.timestamp;
  10. this.signature = res.data.signature;
  11. }
  12. });

3.在项目中引用后,在如下进行微信得初始化操作:

  1. initWechatJS() {
  2. let { nonceStr, timestamp, signature } = this
  3. // 初始化微信JS-SDK配置
  4. wx.config({
  5. debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  6. appId: '', // 必填,公众号的唯一标识
  7. timestamp: timestamp, // 必填,生成签名的时间戳
  8. nonceStr: nonceStr, // 必填,生成签名的随机串
  9. signature: signature,// 必填,签名
  10. jsApiList: [] // 需要使用的微信JS-SDK接口列表
  11. });
  12. },

4.初始化完成后进行如下操作

根据code做判断,如果url里截取到code就代表登录过,不在拉起弹框授权

  1. //微信网页授权
  2. authorizeLogin() {
  3. if (isWechat) {
  4. //判断是否是微信
  5. let uuid = localStorage.getItem("uuid"); //拿到本地存储的uuid,没用就拉起授权,这里用本地存储做判断的原因是解决进行之后页面加载两次
  6. if (uuid == "" || uuid == null || uuid == undefined) {
  7. let code = this.getUrlCode().code; //拿到截取的code
  8. let redirect_uri = urlencode(window.location.href);
  9. let appid = "";//公众号的唯一标识
  10. let wx_url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect&connect_redirect=1`;
  11. if (code == null || code === "") { //在对拿到的code做判断
  12. window.location.href = wx_url;
  13. } else {
  14. this.getOpenid(code);
  15. }
  16. }
  17. }
  18. },

截取code得方法

  1. // 截取url中的code方法
  2. getUrlCode() {
  3. var url = location.search;
  4. var theRequest = new Object();
  5. if (url.indexOf("?") != -1) {
  6. var str = url.substr(1);
  7. var strs = str.split("&");
  8. for (var i = 0; i < strs.length; i++) {
  9. theRequest[strs[i].split("=")[0]] = strs[i].split("=")[1];
  10. }
  11. }
  12. return theRequest;
  13. },

5.获取到code后需要获取用户的openid

注意点:这一步操作需要将请求微信的接口放到后端,前端进行调用,否则会出现跨域现象

  1. //获取openid
  2. getOpenid(code) {
  3. axios.get(`/wx/getUrl`, { params: { code } }).then(res => {
  4. let openid = res.data.openid //获取到openid
  5. let access_token = res.data.access_token //获取到token
  6. if (openid, access_token) {
  7. sessionStorage.setItem('uuid', openid)
  8. this.getUserApi(openid, access_token)
  9. this.getFindisUserApi()
  10. }
  11. }).catch(error => {
  12. console.log(error);
  13. })
  14. },

6.获取到openid和access_token就可以走到最后一步获取用户信息(公众号获取用户信息,只有微信头像,openid和昵称)这一步同样要放到后端进行,前端调用接口形式请求

  1. //微信获取用户信息
  2. getUserApi(openid, token) {
  3. axios
  4. .get(`https://api/wx/info`, {
  5. params: { openId: openid, token: token },
  6. })
  7. .then((res) => {
  8. console.log("用户授权登录信息", res);
  9. localStorage.setItem("imgUrl", res.data.headimgurl);
  10. })
  11. .catch((error) => {
  12. console.log("用户授权登录信息错误返回", error);
  13. });
  14. },

接下来还需要在微信公众号平台进行一些基础配置

公众号配置(参考以下链接内容):

http://t.csdnimg.cn/Y1U6d

到现在一整套流程就走完了~

本人亲测是可以实现的~

如有不对望指正~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/132043
推荐阅读
相关标签
  

闽ICP备14008679号