V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
happyjohann
V2EX  ›  微信

微信个人未认证订阅号有还有引导用户到关注界面和定制分享的方法吗?

  •  
  •   happyjohann · 2016-01-20 21:56:29 +08:00 · 6726 次点击
    这是一个创建于 3233 天前的主题,其中的信息可能已经有所发展或是发生改变。

    关于订阅:
    之前 V2 上有类似的提问(移动网页中还有跳转到微信信息的关注界面吗?)。但一方面时间点不同,微信官方调整了接口;二方面回答很少。

    关于分享:
    之前 V2 上也有类似的提问(微信分享到朋友圈,怎么自定义分享的标题,图片,内容?)。同样,一方面时间点不同,微信官方调整了接口;二方面回答很少。

    嗯,腾讯也是强盗!

    折腾了一天,
    但关于分享,虽然没有完美解决办法,总归有曲线救国的办法。关于微信 jssdk 中,分享内容自定义的代码实现;
    但关于订阅,就完全没有办法了。

    我尝试过的:
    方法 | 备注
    --- | ---
    <a href="http://weixin.qq.com/r/dUPF3XjEjyXwrTy_9xZn">中文学习</a> | 链接为二维码解码生成,失效
    <a href="weixin://profile/gh_5yd69eefc49e">中文学习</a> | gh 开头的为微信公众平台原始 id ,无效
    <a href="weixin://profile/zhongwenxuexi">中文学习</a> | zh...为微信公众平台号,无效
    <a href="weixin://addfriend/gh_5yd69eefc49e">中文学习</a> | 无效
    <a href="weixin://addfriend/zhongwenxuexi">中文学习</a> | 无效
    <a href="weixin://contacts/profile/gh_5yd69eefc49e">中文学习</a> | 无效
    <a href="weixin://contacts/profile/zhongwenxuexi">中文学习</a> | 无效
    <a href="https://open.weixin.qq.com/subscribe?appid=*theappid*">中文学习</a> | 没有认证,也无法获取 OPENID ,并且据说也无效

    以下据说仅对官方域名有效,反正对我没有认证的订阅号无效
    javascript
    var addWxContact = function(wxid, cb)
    {
    if (typeof WeixinJSBridge == 'undefined') return false;
    WeixinJSBridge.invoke('addContact', {
    webtype: '1',
    username: wxid
    }, function(d) {
    // 返回 d.err_msg 取值, d 还有一个属性是 err_desc
    // add_contact:cancel 用户取消
    // add_contact:fail  关注失败
    // add_contact:ok 关注成功
    // add_contact:added 已经关注
    WeixinJSBridge.log(d.err_msg);
    cb && cb(d.err_msg);
    });
    };

    当前方法 - 使用微信后台素材文章中的蓝色字链接
    问题是,用户需要先多浏览一个页面,然后还要点击蓝色字,显然是不合理的。

    基于以上,用<div>+<iframe>,结果是点击蓝色字是无效的!

    最后就是一个貌似可以的, 即如何在微信图文页中加入真正的“一键关注”按钮?,不过比认证更大的问题是,要么原创认证要么交钱广告主,而去还要体力活儿去找链接。
    所以,鹅厂已经开始强盗了!!!

    所以我已经没有办法了,有大神支个招么?

    5 条回复    2016-01-21 13:35:46 +08:00
    abelyao
        1
    abelyao  
       2016-01-20 23:22:50 +08:00
    认证了也没有引导到公众号名片的方法吧?
    happyjohann
        2
    happyjohann  
    OP
       2016-01-21 00:40:59 +08:00
    @abelyao 这个就不清楚了,不过从工作平台用图文素材直接发出来的是的确可以引导到公众号名片的。我尝试查看图文素材发出来页面的代码,然而功力太浅,没能搞定。
    index2a9baf.js 中 190 行有一段
    ```javascript
    var u = e("appmsg/copyright_report.js"), A = e("biz_common/dom/event.js"), _ = e("biz_wap/jsapi/core.js");
    !function() {
    var e = document.getElementById("post-user"), t = document.getElementById("copyright_info"), o = [];
    if (e) {
    var n = "57";
    "26" == window.source && (n = "95"), "28" == window.source && (n = "96"), o.push({
    dom: e,
    username: user_name_new || user_name,
    scene: n
    });
    }
    t && source_username && o.push({
    dom: t,
    username: source_username,
    profile_ext_signature: profile_ext_signature,
    scene: "84"
    });
    for (var i = 0, r = o.length; r > i; i++)
    !function(e) {
    A.on(e.dom, "click", function() {
    return "copyright_info" == e.dom.id && source_username ? (u.card_click_report({
    scene: "0"
    }), location.href = "https://mp.weixin.qq.com/mp/profile_ext?action=home&username=" + e.username + "&sn=" + e.profile_ext_signature + "&scene=1#wechat_redirect") : _.invoke("profile", {
    username: e.username,
    scene: e.scene
    }, function() {
    window.__addIdKeyReport("28307", "1");
    }), !1;
    }), p.isWp && e.dom.setAttribute("href", "weixin://profile/" + e.username);
    }(o[i]);
    }(), function() {
    location.href.match(/fontScale=\d+/) && p.isIOS && _.on("menu:setfont", function(e) {
    e.fontScale <= 0 && (e.fontScale = 100), document.getElementsByTagName("html").item(0).style.webkitTextSizeAdjust = e.fontScale + "%",
    document.getElementsByTagName("html").item(0).style.lineHeight = 160 / e.fontScale;
    });
    }();
    ```
    index2a9baf.js 中 265 行还有一段
    ```javascript
    var p = document.getElementById("js_profile_qrcode"), d = document.getElementById("js_profile_arrow_wrp"), l = document.getElementById("post-user");
    if (p && l && d) {
    var w = function() {
    var e = 10000005, t = document.referrer;
    0 == t.indexOf("http://weixin.sogou.com") ? e = 10000006 : 0 == t.indexOf("https://wx.qq.com") && (e = 10000007);
    var o = document.getElementById("js_profile_qrcode_img");
    o && o.setAttribute("src", "/mp/qrcode?scene=" + e + "&size=102&__biz=" + biz), p.style.display = "block";
    var n = new Image;
    return n.src = "/mp/report?action=pcclick&__biz=" + biz + "&uin=" + uin + "&scene=" + e + "&r=" + Math.random(),
    d.style.left = l.offsetLeft - p.offsetLeft + l.offsetWidth / 2 - 8 + "px", !1;
    };
    A.on(l, "click", w), A.on(p, "click", w), A.on(document, "click", function(e) {
    var t = e.target || e.srcElement;
    t != l && t != p && (p.style.display = "none");
    });
    }
    ```
    对应的 html 文件内容形式如下:
    ```html
    <a class="rich_media_meta rich_media_meta_link rich_media_meta_nickname" href="javascript:void(0);" id="post-user">中文学习</a>
    ```
    abelyao
        3
    abelyao  
       2016-01-21 00:56:42 +08:00
    @happyjohann 微信有些 JS 是直接在本地的(也就是微信的 APP 内)然后由浏览器根据一些条件,如域名,来外挂 JS 实现一些特有功能,仅仅分析页面上的 JS 没用… 另外你给出的这个方法,看到那 3 点准备工作就不想试了…
    oott123
        4
    oott123  
       2016-01-21 01:32:27 +08:00
    目前而言只有你说的那个办法可以。
    如果你找到了新办法,那用不了多久就会被封的…
    happyjohann
        5
    happyjohann  
    OP
       2016-01-21 13:35:46 +08:00
    @abelyao 是的,最大的问题是 带蓝色字的页面是无法自己定制的,如果可以在里面植入一点儿 js 代码,自动点击蓝色字体也就好办了,然而并不能……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5286 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 05:44 · PVG 13:44 · LAX 21:44 · JFK 00:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.