微信公众号网页开发步骤

本文详细介绍了如何在Vue项目中引入微信公众平台的JDK,并通过vue.config.js配置externals来全局使用wx。内容涵盖用户授权的步骤,包括获取code、刷新access_token、拉取用户信息等,以及wx.config、wx.ready和wx.error接口的使用。同时,提供了一个实际的鉴权代码示例,展示如何在Vue应用中调用微信API进行权限验证。
摘要由CSDN通过智能技术生成
  1. 在index.html中引入微信公众JDK的js文件

  2. 在vue.config.js中插入configureWebpack: { externals: { wx: 'wx' },即可以全局import wx from 'wx'

  3. 授权有两种方式。一种直接获取,一种弹框授权。
    第一步:用户同意授权,获取code
    第二步:通过code换取网页授权access_token
    第三步:刷新access_token(如果需要)
    第四步:拉取用户信息(需scope为 snsapi_userinfo)
    附:检验授权凭证(access_token)是否有效

获取用户code方法

  getUrlQuery () {
    let params = location.search.substr(1).split('&')
    let query = {}
    params.map(item => {
      let [key, val] = item.split('=')
      query[key] = val
    })
    return query
  }
   let query = this.getUrlQuery()
   query['code']
  1. 通过config接口注入权限验证配置
wx.config({
  debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  appId: '', // 必填,公众号的唯一标识
  timestamp: , // 必填,生成签名的时间戳
  nonceStr: '', // 必填,生成签名的随机串
  signature: '',// 必填,签名
  jsApiList: [] // 必填,需要使用的JS接口列表
});
  1. 通过ready接口处理成功验证
wx.ready(function(){
  // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});
  1. 通过error接口处理失败验证

鉴权代码:

import wx from 'wx'
import request from '@/utils/request'
function getWxSignature(params) {
  return request({
    url: '',
    method: 'get',
    params
  })
}
if (typeof window.entryUrl === 'undefined' || window.entryUrl === '') {
  window.entryUrl = location.href.split('#')[0]
}
const map = new Map()

export default async function (jsApiList, callback) {
  jsApiList = jsApiList || ['getLocation', 'openLocation']
  const resultApi = []
  jsApiList.forEach(key => {
    if(!map.get(key)) {
      resultApi.push(key)
    }
  })
  if(!resultApi.length) {
    callback && callback()
    return;
  }
  /**
   * ios页面路由跳转时得到的url和jssdk锁定的url不一致,安卓不存在此问题,需要换成ios url
   */
  const hostUrl = /(Android)/i.test(navigator.userAgent) ? location.href.split('#')[0] : window.entryUrl;
  var nonceStr = (function() {
    return Math.random().toString(36).substr(2, 16);
  })();
  var timestamp = (function () {
    return parseInt(new Date().getTime() / 1000) + '';
  })();
  let res = await getWxSignature({
    timestamp,
    nonceStr,
    hostUrl
  })
  if (res) {
    wx.config({
      debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
      appId: 'xxx', // 必填,公众号的唯一标识
      timestamp, // 必填,生成签名的时间戳
      nonceStr, // 必填,生成签名的随机串
      signature: res.data, // 必填,签名
      jsApiList: resultApi // 必填,需要使用的JS接口列表
    })
    wx.ready(() => {

      // VALID_SUCCESS = true
      // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
      callback && callback()
    })
    wx.error(e => {
      // VALID_SUCCESS = false
      callback && callback(false)
      console.log(e)
    })
  }
}
调用例子
  created() {
    checkWX(['openLocation']) //映入方法后,填入数组
  },
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
微信公众号网页授权是指用户在微信客户端内访问第三方网页时,第三方网页可以通过微信授权获取用户基本信息的功能。下面是实现微信公众号网页授权的代码开发步骤: 1. 准备工作 在微信公众平台上,开发者需要先获取到自己的公众号AppID和AppSecret,并且在公众号后台设置授权回调域名。 2. 获取授权链接 在第三方网页中,用户点击授权按钮后,需要跳转到微信授权页面,获取用户授权。在获取授权链接时,需要拼接以下参数: ``` appid:公众号AppID redirect_uri:授权回调页面 response_type:固定值code scope:snsapi_base或snsapi_userinfo state:可以是任意字符串,用于维护请求状态,防止CSRF攻击 ``` 其中,scope有两个取值: - snsapi_base:静默授权,只能获取到用户的openid。 - snsapi_userinfo:需要用户手动同意授权,可以获取到用户的基本信息。 拼接完参数后,通过urlEncode进行编码,得到授权链接。 3. 用户授权 用户跳转到微信授权页面后,需要手动同意授权。授权成功后,微信会将code参数传回授权回调页面。 4. 获取access_token和openid 通过code参数获取access_token和openid。拼接以下链接,使用GET方法请求即可: ``` https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=APPSECRET&code=CODE&grant_type=authorization_code ``` 其中,APPID和APPSECRET为公众号的AppID和AppSecret,CODE为授权回调页面传回的code值。 5. 获取用户信息 如果scope取值为snsapi_userinfo,可以通过access_token和openid获取用户基本信息。拼接以下链接,使用GET方法请求即可: ``` https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN ``` 其中,ACCESS_TOKEN为上一步获取的access_token,OPENID为上一步获取的openid。 以上就是微信公众号网页授权的代码开发步骤
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值