直接上图,金山的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. 【分享】iTOP-4412开发板使用之初体验[多图]

    近期入手了4412开发板,配的7寸屏和WIFI模块,GPS模块,下面晒个照片介绍一下,手机拍摄图片有点模糊,实物很精致,是我所见过最好的板子.b( ̄▽ ̄)d 预装的Android4.0.3系统,5点以 ...

  2. [转]AngularJs 多语言的使用 angular-translate

    本文转自:http://www.tuicool.com/articles/zeymimB 随着世界各地Web访问量的增加,作为开发者的我们也在不断让应用国际化.本地化.当用户访问我们的应用时,他应该能 ...

  3. ZOJ 3829 Known Notation --贪心+找规律

    题意:给出一个字符串,有两种操作: 1.插入一个数字  2.交换两个字符   问最少多少步可以把该字符串变为一个后缀表达式(操作符只有*). 解法:仔细观察,发现如果数字够的话根本不用插入,数字够的最 ...

  4. UESTC 32 树上战争(Battle on the tree)

    这题其实很简单,每个人肯定都往上走,才能保证尽快赢,所以无非是看谁离根节点近,即深度小..用并查集中的findset思想,不断找父节点一直到根节点来找深度就可以了. 代码: #include < ...

  5. RabbitMQ 一二事(4) - 路由模式介绍

    路由模式其实和订阅模式差不多,只不过交换机的类型不同而已 路由模式可以用下图来表示,比订阅模式多了一个key,举个栗子就是根据不同的人群来订阅公众号,来收取消息 根据不同的key来获取不同的消息 最简 ...

  6. ref out 方法参数

    ref out 相似 ref和out两个关键字的作用大致相同,但是有一些微妙但是重要的区别. 两者的行为相似到连编译器都认为这两者不能被重载:public void SampleMethod(out ...

  7. 使用appscan实现多站扫描简单自动化

    因为appscan在新建扫描任务的时候只能输入一个target,并且没有awvs/nessus那样提供web接口,导致我以前一直以为appscan不能像awvs那样批量建立任务自动扫描. 不过,今天要 ...

  8. 使用JspStudy集成环境快速部署jsp项目

    1. 安装jdk 本人网盘资源:https://yunpan.cn/ckZLNbqxkDYYe (提取码:b5e8) 去jdk官网下载最新的jdk: http://www.oracle.com/tec ...

  9. android studio 中的编码问题

    在 Android studio 中直接创建项目和导入其他项目都会有一个文件编码设定的问题,在 android studio (version 1.2.0)中设置文件的编码,只需要两步: 1.打开Se ...

  10. Volley(三)—— ImageRequest & Request简介

    Volley(三)—— ImageRequest & Request简介 上 篇文章我们讲 到了如何用volley进行简单的网络请求,我们可以很容易的接受到string.JsonObjec类型 ...