直接上图,金山的APP“微信导航”,从界面上看有粉丝数等关键数据,实现了直接关注功能,莫不是rest接口?这江湖是大佬们的江湖,小喽啰只有眼馋的份咯。

很早就听说过WeixinJSBridge,不过官方貌似不提倡,先晒晒学习笔记

【Pockey】编辑整理

  1. //通过关注微信好友
  2. function WeiXinAddContact(wxid, cb)
  3. {
  4. if (typeof WeixinJSBridge == 'undefined') return false;
  5. WeixinJSBridge.invoke('addContact', {
  6. webtype: '1',
  7. username: wxid
  8. }, function(d) {
  9. // 返回d.err_msg取值,d还有一个属性是err_desc
  10. // add_contact:cancel 用户取消
  11. // add_contact:fail 关注失败
  12. // add_contact:ok 关注成功
  13. // add_contact:added 已经关注
  14. WeixinJSBridge.log(d.err_msg);
  15. cb && cb(d.err_msg);
  16. });
  17. };
  18. //通过微信分享
  19. function WeiXinShareBtn() {
  20. if (typeof WeixinJSBridge == "undefined") {
  21. alert("请先通过微信xxxx");
  22. } else {
  23. WeixinJSBridge.invoke('shareTimeline', {
  24. "title": "xxx",
  25. "link": "xxxx",
  26. "desc": "关注xxx",
  27. "img_url": "xxxx"
  28. });
  29. }
  30. }

复制代码

1. 上面的代码目前在微信内置浏览器才有效果
2. WeiXinAddContact中的微信wxid需要微信的原始id
例如商翼云的微信id:i3eyun,原始id:gh_b15f77615e32,
在iphone版本的微信中使用两种id都能完成正常的关注
但在android版本中如果使用i3eyun这个无法返回,一直停留在“正在关注。。。”,而修改成id:gh_b15f77615e32就正常了
3. 如果用户希望用户在打开页面的时候,直接能弹出关注的对话框

  1. //init
  2. function r(f){(typeof WeixinJSBridge == 'undefined'||(typeof WeixinJSBridge.invoke == 'undefined'))?setTimeout('r('+f+')',200):f()}
  3. r(function(){
  4. WeiXinAddContact("gh_b15f77615e32");
  5. });

复制代码

微信内置浏览器会有WeixinJSBridge,但是需要一定的加载时间,WeixinJSBridge 有了之后 WeixinJSBridge.invoke也不一定有,所有看到r这个函数了把。。。(ps:每次打开都弹多不好意思阿,所以需要通过cookie来控 制,WeiXinAddContact回调状态来设置cookie和通过cookie判断是否要执行init的部分的r)

【Denis】分享

  1. //分享到朋友圈
  2. function weixinShareTimeline(title,desc,link,imgUrl){
  3. WeixinJSBridge.invoke('shareTimeline',{
  4. "img_url":imgUrl,
  5. //"img_width":"640",
  6. //"img_height":"640",
  7. "link":link,
  8. "desc": desc,
  9. "title":title
  10. });
  11. }
  12. //发送给好友
  13. function weixinSendAppMessage(title,desc,link,imgUrl){
  14. WeixinJSBridge.invoke('sendAppMessage',{
  15. //"appid":appId,
  16. "img_url":imgUrl,
  17. //"img_width":"640",
  18. //"img_height":"640",
  19. "link":link,
  20. "desc":desc,
  21. "title":title
  22. });
  23. }
  24. //分享到腾讯微博
  25. function weixinShareWeibo(title,link){
  26. WeixinJSBridge.invoke('shareWeibo',{
  27. "content":title + link,
  28. "url":link
  29. });
  30. }
  31. //关注指定的微信号
  32. function weixinAddContact(name){
  33. WeixinJSBridge.invoke("addContact", {webtype: "1",username: name}, function(e) {
  34. WeixinJSBridge.log(e.err_msg);
  35. //e.err_msg:add_contact:added 已经添加
  36. //e.err_msg:add_contact:cancel 取消添加
  37. //e.err_msg:add_contact:ok 添加成功
  38. if(e.err_msg == 'add_contact:added' || e.err_msg == 'add_contact:ok'){
  39. //关注成功,或者已经关注过
  40. }
  41. })
  42. }

复制代码

【jodan179】分享
1. 在微信内置浏览器中可以调用weixin协议链接直接查看某个微信号的资料,例如:

  1. <a href="weixin://profile/gh_b15f77615e32">商翼云</a>

复制代码

这里gh_xxxxxxxx就是用户的原始ID,注意,必须使用原始ID.

2. 分享到朋友圈:

  1. function ShareTofriends(img_url,link,title,desc) {
  2. //在HTML页面内嵌入这一段JS代码
  3. if(window.WeixinJSBridge){
  4. if( typeof(img_url) == 'undefined' || img_url == ""){
  5. var img_url = "xxxx";
  6. }
  7. if( typeof(link) == 'undefined' || link == ""){
  8. var img_url = window.location.href;
  9. }
  10. if ( typeof(title) == 'undefined' || title == "" ){
  11. var title = '点开看一下吧!';
  12. }
  13. if( typeof(desc) == 'undefined' || desc == ""){
  14. var desc = "wendoscoo";
  15. }
  16. WeixinJSBridge.invoke('shareTimeline',{
  17. "img_url": img_url,
  18. //"img_width": "640",
  19. //"img_height": "640",
  20. "link": link,
  21. "desc": desc,
  22. "title": title
  23. },function(res){
  24. // 返回res.err_msg,取值
  25. // share_timeline:cancel 用户取消
  26. // share_timeline:fail 发送失败
  27. // share_timeline:ok 发送成功
  28. WeixinJSBridge.log(res.err_msg);
  29. });
  30. return false;
  31. } else{
  32. alert("WeixinJSBridge对象不存在!!");
  33. }
  34. };

复制代码

然后同样使用一个a标签实现分享功能,加上onclick时间调用分享的JS函数就可以了

  1. <a href="javascript:void(0);" onclick="ShareTOfriend('分享弹出窗的图片URL地址','分享的页面链接','分享弹出窗的标题','分享内容的描述')">分享到朋友圈</a>

复制代码

传说中的WeixinJSBridge和微信rest接口的更多相关文章

  1. 总结的一些微信API接口

    本文给大家介绍的是个人总结的一些微信API接口,包括微信支付.微信红包.微信卡券.微信小店等,十分的全面,有需要的小伙伴可以参考下. 1. [代码]index.php <?php include ...

  2. md笔记——微信JS接口

    微信js接口 隐藏微信中网页右上角按钮 document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { Weix ...

  3. 微信JS接口

      微信JS接口 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置来源:http://www.cnblogs.com/txw1958/p/ ...

  4. 微信录音接口的调用以及amr文件转码MP3文件的实现

    最近实现录音功能,主要涉及到录音的上传和下载,以及转码问题.微信,QQ默认的的音频文件是amr格式的,而播放器却不识别amr格式的音频,必须尽行转码.amr文件分为两种,一种是通用的amr格式,这种文 ...

  5. 微信支付接口 H5

    php微信支付若干问题记录 1.缺少参数$key0$ 此问题的可能性有几种,大致有1.timeStamp这个参数应该是string类型,默认time是int 2.确实是参数缺少  比如:prepay_ ...

  6. asp.net mvc 如何调用微信jssdk接口:分享到微信朋友(圈)| 分享到qq空间

    如何在asp.net mvc 项目里, 调用微信jssdk接口,现实功能: 分享到微信朋友(圈)| 分享到qq空间 1 创建一个Action,准备一些数据,初始化数据(签名): /// <sum ...

  7. 微信公开课发布微信官方教程:教你用好微信JS-SDK接口

    微信公众平台开放JS-SDK(微信内网页开发工具包),说明文档已经有相关使用方法和示例了,很多同学觉得不是很直观,为此微信公开课发布微信官方教程:教你用好微信JS-SDK接口. 1.分享类接口:支持获 ...

  8. 官方教程:教你用好微信JS-SDK接口

    微信开放JS-SDK接口,开发者和行业用户可谓是欢欣鼓舞.奔走相告,目测将激起一大波第三方开发商的创新产品!真真是H5开发者的利好!但也有用户表示,还不了解JS-SDK接口到底是啥,究竟怎么用.现在, ...

  9. php微信支付接口开发程序

    php微信支付接口开发程序讲解 微信支付接口现在也慢慢的像支付宝一个可以利用api接口来实现第三方网站或应用进行支付了, 下文整理了一个php微信支付接口开发程序并且己测试,有兴趣的朋友可进入参考. ...

随机推荐

  1. multiprocessing module in python(转)

    序.multiprocessing python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用的多进程包mu ...

  2. [转]Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作

    本文转自:http://www.cnblogs.com/wuhuacong/archive/2012/03/09/2387680.html Oracle中对数据对象和数据的管理,无疑都是使用PL/SQ ...

  3. 谷歌开源项目Google Preview Image Extractor(PIEX) (附上完整demo代码)

    前天偶然看到谷歌开源项目中有一个近乎无人问津的项目Google Preview Image Extractor(PIEX) . 项目地址: https://github.com/google/piex ...

  4. JavaWeb学习----JSP脚本元素、指令元素、动作元素

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. Gerrit日常操作命令收集

    Gerrit代码审核工具是个好东西,尤其是在和Gitlab和Jenkins对接后,在代码控制方面有着无与伦比的优势. 在公司线上部署了一套Gerrit系统,在日常运维中,使用了很多gerrit命令,在 ...

  6. CSS 布局调试工具

    说是工具其实只是一段 Javascript 代码,但非常实用,它会给页面里所有的 DOM 元素添加一个 1px 的描边(outline),方便我们在调试 CSS 过程中分析.排查问题. 先来看看代码, ...

  7. CSS选择器的权重与优先规则

    权重顺序 “important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 继承 > 通配符”.   原文:http://w ...

  8. [转]iOS 应用内付费(IAP)开发步骤

    FROM : http://blog.csdn.net/xiaoxiangzhu660810/article/details/17434907 参考文章链接: (1)http://mobile.51c ...

  9. MySQL学习指引

    mysql指引 1,mysql基本安装 2,mysql多实例安装与维护 3,备份恢复 备份数据库 分备数据库 分备表 恢复数据库

  10. Contains Duplicate II

    Given an array of integers and an integer k, find out whether there there are two distinct indices i ...