首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

ios 微信分享显示 config:fail,安卓是 config:ok,开发者工具也是 config:ok

  •  
  •   pytth · 107 天前 · 1346 次点击
    这是一个创建于 107 天前的主题,其中的信息可能已经有所发展或是发生改变。

    ios 微信分享显示 config:fail,安卓是 config:ok,开发者工具也是 config:ok,应该是 ios 系统原因,有微信分享开发经验的人吗,有没有遇到过这个问题,晚上尝试了很多方法都不行。

    尝试了下面的方法: 1、url 为自动获取(微信官方 demo 要求) 2、link 的 url 使用 encodeURIComponent()对 URI 进行编码 3、img 图片大小小于 32kb 4、通过 location.protocol,location.host 来拼接 url

    都是没办法,特此请教各位有经验的人。

    我已经把很多东西写死了,都不行。(写死的那些都是在有效期内测试)

    <?php
    // 获取微信 access_token
    $access_token = "填写 access_token";
    
    // 获取 jsapi_ticket
    $jsapiTicket = "填写 ticket";
    
    // 默认生成 16 位随机数
    $md5str = MD5(time());
    $str = substr($str, 0,16);
    
    // 获取要排序的 signature
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
    $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    
    $timestamp = time();
    $nonceStr = $str;
    
    // 这里参数的顺序要按照 key 值 ASCII 码升序排序
    $string1 = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
    $signature = sha1($string1);
    
    //URL 转码
    // $shareurl = encodeURIComponent($url);
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>微信自定义分享</title>
    </head>
    <body>
    </body>
    <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
    <script>
      wx.config({
        debug: true,
        appId: 'wx92538fd0586e8250',
        timestamp: <?php echo $timestamp;?>,
        nonceStr: '<?php echo $str;?>',
        signature: '<?php echo $signature;?>',
        jsApiList: [
          // 所有要调用的 API 都要加到这个列表中
          'onMenuShareTimeline',
          'chooseImage'
        ]
      });
      wx.ready(function () {
          wx.onMenuShareTimeline({
            title: 'JSSDK 微信分享测试',
            link: location.protocol+'//'+location.host+'/'+'share/',
            imgUrl: location.protocol+'//'+location.host+'/'+'share/'+'1520566472.png',
            success: function (res) {
              alert('已分享');
            },
            cancel: function (res) {
              alert('已取消');
            },
            fail: function (res) {
              alert(JSON.stringify(res));
            }
          })
      });
    </script>
    </html>
    

    微信图片_20190707214825.jpg

    13 回复  |  直到 2019-07-08 15:42:53 +08:00
        1
    pytth   107 天前
        2
    imydou   107 天前
    有没有试过升级下引入的 jweixn
        3
    imydou   107 天前
    https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&announce_id=11526372695t90Dn&version=&lang=zh_CN&token=

    请注意,原有的 wx.onMenuShareTimeline、wx.onMenuShareAppMessage、wx.onMenuShareQQ、wx.onMenuShareQZone 接口,即将废弃。请尽快迁移使用客户端 6.7.2 及 JSSDK 1.4.0 以上版本支持的 wx.updateAppMessageShareData、updateTimelineShareData 接口。

    不知道和这个有没有关系
        4
    qqjt   107 天前
    你应该在微信开发者工具里看,有调试信息;我看报 Error: invalid signature,还有 nonceStr 是空的,不是这么搞的
        5
    gam2046   106 天前
    不做微信开发,但是听说有这么个事情,你看看和你有关系么

    https://open.weixin.qq.com/cgi-bin/announce?spm=a311a.9588098.0.0&action=getannouncement&key=11534138374cE6li
        6
    sufaith   106 天前
    IOS 微信浏览器在验证微信 jssdk 签名时,需要的 URL 是第一次进入该应用时的 URL, 并不是当前页面的 URL
        7
    ODD10   106 天前 via iPhone
    @sufaith #6
    PHP 也会吗?是单页面 history 模式才会吧
        8
    ODD10   106 天前 via iPhone
    建议楼主使用校验工具排查问题
        9
    pytth   106 天前 via iPhone
    @ODD10 检验工具没有任何报错,没法找到原因
        10
    pytth   106 天前 via iPhone
    @imydou 可能是,我得尝试下新的策略
        11
    pytth   106 天前 via iPhone
    @gam2046 这只是分享回调取消了,我这个是连分享都没成功接入。
        12
    annielong   106 天前
    会不会多拼接了‘/’,多的话也会报错
        13
    tutou   106 天前
    上周五刚调试玩上线,坑真的多。不过你的问题没遇到,建议你看看开发者工具有没有注册成功
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2591 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 14:22 · PVG 22:22 · LAX 07:22 · JFK 10:22
    ♥ Do have faith in what you're doing.