V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
alex321
V2EX  ›  问与答

有朋友使用了微信的 js sdk 做分享么?请教个问题。

  •  
  •   alex321 · 2015-01-29 17:41:54 +08:00 · 8795 次点击
    这是一个创建于 3596 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我们在使用微信 js sdk 的分享功能的时候,wx.config 正常无错,在调用 onMenuShareTimeline 方法的时候遇到一个怪异的问题,当前设置的内容并不能对分享到朋友圈界面的表单中起效。
    Google 一下,发现也有类似的问题,按照那个延时 2s 的方法去尝试,结果还是不行。
    http://segmentfault.com/q/1010000002488298/a-1020000002488753
    http://segmentfault.com/q/1010000002515471/a-1020000002515801

    PS,当初微信 js sdk 公布出来,我一直以为可以让用户直接点击页面的分享按钮就可以进入分享到朋友圈中去了,结果现在能做的就是修改分享的内容。。。。
    12 条回复    2015-01-29 18:28:10 +08:00
    66beta
        1
    66beta  
       2015-01-29 17:45:49 +08:00
    可能还是网速卡的缘故
    js sdk设置分享还要走一遍token真是浪费时间,浪费网络
    只要我把域名添加到公众号里面不就行了,打开的时候查询一次域名在不在白名单
    alex321
        2
    alex321  
    OP
       2015-01-29 17:55:26 +08:00
    @66beta 感谢关注。公司的域名已经通过备案,并且将根域名添加到了 js api 调用的许可域名中了,在另外一个子域名下部署的一个 js api demo 是正常的说。
    生成 wx.config 的四个参数我们是通过 ajax 从测试成功了的 js api demo 公司域名下拉取的,并且在页面上也是提示配置成功了,到了其他域名下就木有效果了。。
    很是怪异。
    kslr
        3
    kslr  
       2015-01-29 17:55:29 +08:00
    我延时5秒多才有用。。。
    kslr
        4
    kslr  
       2015-01-29 17:56:15 +08:00
    @alex321 签名URL ?
    alex321
        5
    alex321  
    OP
       2015-01-29 18:02:35 +08:00
    @kslr 签名 url 是利用 ajax 传递到测试成功的子域名下程序处理了的,a.foo.com 已经成功部署了 js api 的 demo。
    假设我们的页面在 b.foo.com 下面,我们的流程是,wx.config 加载前利用 ajax 把当前 url 传递到已经配置好了的 a.foo.com 下面程序计算返回 timestamp、appId、nonceStr 和 signature,然后在当前页面上处理相应功能。
    pubby
        6
    pubby  
       2015-01-29 18:02:44 +08:00
    //引入jssdk

    wx.config({.....});

    wx.ready(function(){

    // 在这里注册 wx.onMenuShareTimeline 之类的事件 调整分享文案

    });


    另外 access_token,和 jsapi_ticket 需要全部共享给各个业务,每个业务自己去刷access_token会出问题
    pubby
        7
    pubby  
       2015-01-29 18:03:21 +08:00
    全部共享 -> 全局共享
    alex321
        8
    alex321  
    OP
       2015-01-29 18:06:41 +08:00
    @pubby 谢谢。
    如 #5,我们的微信核心程序部署在 a.foo.com,其他需要使用微信功能的 api 都从 a.foo.com 下调用,a.foo.com 下针对 access_token 和 jsapi_ticket 都做了缓存,时间为 1700。
    vfasky
        9
    vfasky  
       2015-01-29 18:11:16 +08:00
    为什么不用这种方法?

    1. 定义 `<title>分享的标题</title>`
    2. 在 `<body>` 开头插入 `<div style="display:none"><img src="分享显示的封面" alt=""/></div>`
    (注,body 不能用背景图,否则会拿body的背景图当封面)

    以上, 不用申请什么sdk权限,还兼容 UC , QQ 浏览器的分享
    pubby
        10
    pubby  
       2015-01-29 18:11:38 +08:00
    @alex321 我这边使用正常,碰到网速问题可能页面打开过会儿分享才会起作用。

    另外发现被http劫持插入广告代码之类的也会造成一定影响。
    alex321
        11
    alex321  
    OP
       2015-01-29 18:22:26 +08:00
    @vfasky 现在我们要做的这个页面就是有一个大大的背景图片。。-..-!
    这个问题实质上是和微信公开的 js api 的分享功能的价值有关,我在问题的最后一个 PS 就表达了这个困惑。。
    一般来说,分享的时候会自动读取当前 url 上的 title、description 和第一幅 img 之类的。。
    alex321
        12
    alex321  
    OP
       2015-01-29 18:28:10 +08:00
    @pubby 刚刚前端反馈说已经可以了。
    估计微信是将请求的全部域名做了过滤,我们提交的是 foo.com,然后今天第一次用 b.foo.com 请求,中间似乎需要经过微信的过滤,这个时间,呵呵,就等着吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5362 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:13 · PVG 17:13 · LAX 01:13 · JFK 04:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.