微信公众号开发从微信网页授权到自定义分享

本篇文章主要涉及内容:

  • 网页授权界面不一致,授权时已进入应用界面
  • 后台设置cookie丢失,通过js缓存cookie
  • 自定义分享android与ios之间分享导致图片失效

网页授权界面不一致:

问题描述:

 在OAuth2.0开发中,我们的授权登陆页面在'微信web开发工者工具'中如左图的样式,但是在

 实际的应用场景中,我们会发现一个问题:授权登陆时,需要授权的页面内容已经加载。即使用户拒绝了授权依旧可以继续浏览我们提供的网页,但有时候我们需要实现用户只有在授权后才可以继续浏览的操作。

解决方式:添加首页,首页只做一件事,就是进行微信授权。如果用户拒绝授权,那么就会停留在当前空白页,不会跳转向我们真正的地址。后面我们分享出去的每一个链接都回加上这个前缀,这样就能保证未授权的用户必须进行授权才能访问。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <script src="./js/jquery.min.js"></script>
    <script src="./js/jweixin-1.4.0.js"></script>
    <script>
        $(document).ready(function () {
            var search = document.location.search;
            var index1 = search.indexOf("?");
            var redirectUrlStr = search.substring(index1 + 1);
            redirectUrlStr = redirectUrlStr;
            redirect_uri = encodeURIComponent(redirectUrlStr.replace("redirectUrl=", ""));
            window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxb77b39207ae09678&redirect_uri=" + redirect_uri + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
        });
    </script>
</head>
<body>
</body>
</html>

通过JS存取CookieID

问题描述:最初,我是通过Java后端尝试将用户的openId写入到cookie,但实际开发过程,我发现传到前台时各种各样的原因导致cookie丢失。

解决方式:在授权登陆后通过用户的code码保存用户的获取用户的AccessToken信息到redis时,将openid返回到前台,并通过js存取cookie,后通过openid到后台交换数据。

function setCookie_OpenId(value) {
    var Days = 30;
    var exp = new Date();
    exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
    document.cookie = "cookie_openId" + "=" + escape(value) + ";expires=" + exp.toGMTString();
    console.log("设置openId:" + document.cookie);
}

function getCookie(name) {
    var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
    if (arr = document.cookie.match(reg))
        return unescape(arr[2]);
    else
        return null;
}

自定义分享android与ios之间分享导致图片失效

问题描述: 微信分享到朋友和朋友圈时,当我们使用新的updateAppMessageShareData和updateTimelineShareData接口时,在安卓和ios之间分享时会导致分享时设置的imgUrl未生效,而且对应菜单的trigger监听事件也是无效的。

解决方式:切换接口,使用updateTimelineShareDataonMenuShareTimeline

猜你喜欢

转载自www.cnblogs.com/nowl/p/10097519.html