微信授权开发

公众号静默获取用户微信基本资料

  1. 后台redirct访问 https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=回调地址&response_type=code&scope=snsapi_base&state=STATE 
    • 回调地址=回调地址?goalUrl=业务上需要访问的目标地址。回调地址需要先encode,然后与回调地址拼装后再encode
goalUrl = URLEncoder.encode(goalUrl,"utf-8");
sb.append(URLEncoder.encode(wxPayConfig.getDomain()+callbackUrl + (callbackUrl.indexOf("?") != -1 ? "&" : "?") +"goalUrl=" + goalUrl,"utf-8"));
  1. 微信回调callbackUrl,回调时会传入code和state
  2. 根据code获取openidhttps://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=APPSECRET&code=回调的code&grant_type=authorization_code
  3. 获取access_tokenhttps://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
  4. 根据access_token、openid获取用户信息https://api.weixin.qq.com/cgi-bin/user/info?access_token=前面的access_token&openid=前面的openid&lang=zh_CN

用户主动授权获取基本信息

  1. 获取微信的授权地址,前端页面访问。https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=回调地址&response_type=code&scope=snsapi_base&state=需要透传的值&connect_redirect=1#wechat_redirect 
    • 回调地址=回调地址?goalUrl=业务上需要访问的目标地址。与静默方式一样
  2. 微信回调,回调时会传入code、state、goalUrl
  3. 同时获取access_token和openidhttps://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=APPSECRECT&code=回调的code&grant_type=authorization_code
  4. 根据access_token、openid获取用户信息https://api.weixin.qq.com/sns/userinfo?access_token=获取的access_token&openid=获取的openid
  5. 在微信回调的方法中redirct回调时传回的goalUrl

微信自定义分享步骤:

  1. 获取全局通用的access_token:[https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=自己的appid&secret=自己的appsecrect])
  2. 获取jsapi_ticket([https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=前面获取的全局token&type=jsapi])
  3. 获取签名(见微信demo中的sign方法)
  4. 前端页面增加wx.config,wx.ready等函数,样例代码:
// 微信配置
    $.ajax({
        type: 'get',
        url: '/ordershare',
        data: {
        	shareUrl: window.location.href.split('#')[0]
        },
        success: function (config) {
            initWechat(config.result);
        },
        dataType: 'json'
    })

    function initWechat(config) {
        /*
           * 注意:
           * 1. 所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
           * 2. 如果发现在 Android 不能分享自定义内容,请到官网下载最新的包覆盖安装,Android 自定义分享接口需升级至 6.0.2.58 版本及以上。
           * 3. 常见问题及完整 JS-SDK 文档地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html
           *
           * 开发中遇到问题详见文档“附录5-常见错误及解决办法”解决,如仍未能解决可通过以下渠道反馈:
           * 邮箱地址:weixin-open@qq.com
           * 邮件主题:【微信JS-SDK反馈】具体问题
           * 邮件内容说明:用简明的语言描述问题所在,并交代清楚遇到该问题的场景,可附上截屏图片,微信团队会尽快处理你的反馈。
           */
        wx.config({
            debug: true,
            appId: config.appid,
            timestamp: config.timestamp,
            nonceStr: config.nonceStr,
            signature: config.signature,
            jsApiList: [
                'checkJsApi',
                'onMenuShareTimeline',
                'onMenuShareAppMessage',
                'onMenuShareQQ',
                'onMenuShareWeibo',
                'onMenuShareQZone'
            ]
        })

        wx.ready(function () {

            // 监听“分享给朋友”,按钮点击、自定义分享内容及分享结果接口
            document.querySelector('#onMenuShareAppMessage').onclick = function () {
                wx.onMenuShareAppMessage({
                    title: '我生平最佩服四种人',  // 分享标题
                    desc: '看黄片不快进的人,看黄片不打飞机的人,看完黄片还没打出来的人,打完了还能把黄片看完的人。 因为这代表了人类最珍贵的四种品质:踏实,正直,坚持,执着',  // 分享描述
                    link: location.href.split("#")[0],  // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                    imgUrl: location.href.split("#")[0] + '/file/huaji.png',  // 分享图标
                    type: 'link',  // 分享类型,music、video或link,不填默认为link
                    dataUrl: '',  // 如果type是music或video,则要提供数据链接,默认为空
                    trigger: function (res) {
                        // 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
                        alert('用户点击发送给朋友')
                    },
                    success: function (res) {
                        // 用户确认分享后执行的回调函数
                        alert('已分享')
                    },
                    cancel: function (res) {
                        // 用户取消分享后执行的回调函数
                        alert('已取消')
                    },
                    fail: function (res) {
                        // 分享失败时执行的回调函数
                        alert(JSON.stringify(res))
                    }
                })

                alert('已注册获取“发送给朋友”状态事件')
            }
        })

        wx.error(function (res) {
            alert(res.errMsg)
        })
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值