传说中的WeixinJSBridge和微信rest接口
直接上图,金山的APP“微信导航”,从界面上看有粉丝数等关键数据,实现了直接关注功能,莫不是rest接口?这江湖是大佬们的江湖,小喽啰只有眼馋的份咯。
很早就听说过WeixinJSBridge,不过官方貌似不提倡,先晒晒学习笔记
【Pockey】编辑整理
- //通过关注微信好友
- function WeiXinAddContact(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);
- });
- };
- //通过微信分享
- function WeiXinShareBtn() {
- if (typeof WeixinJSBridge == "undefined") {
- alert("请先通过微信xxxx");
- } else {
- WeixinJSBridge.invoke('shareTimeline', {
- "title": "xxx",
- "link": "xxxx",
- "desc": "关注xxx",
- "img_url": "xxxx"
- });
- }
- }
复制代码
1. 上面的代码目前在微信内置浏览器才有效果
2. WeiXinAddContact中的微信wxid需要微信的原始id
例如商翼云的微信id:i3eyun,原始id:gh_b15f77615e32,
在iphone版本的微信中使用两种id都能完成正常的关注
但在android版本中如果使用i3eyun这个无法返回,一直停留在“正在关注。。。”,而修改成id:gh_b15f77615e32就正常了
3. 如果用户希望用户在打开页面的时候,直接能弹出关注的对话框
- //init
- function r(f){(typeof WeixinJSBridge == 'undefined'||(typeof WeixinJSBridge.invoke == 'undefined'))?setTimeout('r('+f+')',200):f()}
- r(function(){
- WeiXinAddContact("gh_b15f77615e32");
- });
复制代码
微信内置浏览器会有WeixinJSBridge,但是需要一定的加载时间,WeixinJSBridge 有了之后 WeixinJSBridge.invoke也不一定有,所有看到r这个函数了把。。。(ps:每次打开都弹多不好意思阿,所以需要通过cookie来控 制,WeiXinAddContact回调状态来设置cookie和通过cookie判断是否要执行init的部分的r)
【Denis】分享
- //分享到朋友圈
- function weixinShareTimeline(title,desc,link,imgUrl){
- WeixinJSBridge.invoke('shareTimeline',{
- "img_url":imgUrl,
- //"img_width":"640",
- //"img_height":"640",
- "link":link,
- "desc": desc,
- "title":title
- });
- }
- //发送给好友
- function weixinSendAppMessage(title,desc,link,imgUrl){
- WeixinJSBridge.invoke('sendAppMessage',{
- //"appid":appId,
- "img_url":imgUrl,
- //"img_width":"640",
- //"img_height":"640",
- "link":link,
- "desc":desc,
- "title":title
- });
- }
- //分享到腾讯微博
- function weixinShareWeibo(title,link){
- WeixinJSBridge.invoke('shareWeibo',{
- "content":title + link,
- "url":link
- });
- }
- //关注指定的微信号
- function weixinAddContact(name){
- WeixinJSBridge.invoke("addContact", {webtype: "1",username: name}, function(e) {
- WeixinJSBridge.log(e.err_msg);
- //e.err_msg:add_contact:added 已经添加
- //e.err_msg:add_contact:cancel 取消添加
- //e.err_msg:add_contact:ok 添加成功
- if(e.err_msg == 'add_contact:added' || e.err_msg == 'add_contact:ok'){
- //关注成功,或者已经关注过
- }
- })
- }
复制代码
【jodan179】分享
1. 在微信内置浏览器中可以调用weixin协议链接直接查看某个微信号的资料,例如:
- <a href="weixin://profile/gh_b15f77615e32">商翼云</a>
复制代码
这里gh_xxxxxxxx就是用户的原始ID,注意,必须使用原始ID.
2. 分享到朋友圈:
- function ShareTofriends(img_url,link,title,desc) {
- //在HTML页面内嵌入这一段JS代码
- if(window.WeixinJSBridge){
- if( typeof(img_url) == 'undefined' || img_url == ""){
- var img_url = "xxxx";
- }
- if( typeof(link) == 'undefined' || link == ""){
- var img_url = window.location.href;
- }
- if ( typeof(title) == 'undefined' || title == "" ){
- var title = '点开看一下吧!';
- }
- if( typeof(desc) == 'undefined' || desc == ""){
- var desc = "wendoscoo";
- }
- WeixinJSBridge.invoke('shareTimeline',{
- "img_url": img_url,
- //"img_width": "640",
- //"img_height": "640",
- "link": link,
- "desc": desc,
- "title": title
- },function(res){
- // 返回res.err_msg,取值
- // share_timeline:cancel 用户取消
- // share_timeline:fail 发送失败
- // share_timeline:ok 发送成功
- WeixinJSBridge.log(res.err_msg);
- });
- return false;
- } else{
- alert("WeixinJSBridge对象不存在!!");
- }
- };
复制代码
然后同样使用一个a标签实现分享功能,加上onclick时间调用分享的JS函数就可以了
- <a href="javascript:void(0);" onclick="ShareTOfriend('分享弹出窗的图片URL地址','分享的页面链接','分享弹出窗的标题','分享内容的描述')">分享到朋友圈</a>
复制代码
传说中的WeixinJSBridge和微信rest接口的更多相关文章
- 总结的一些微信API接口
本文给大家介绍的是个人总结的一些微信API接口,包括微信支付.微信红包.微信卡券.微信小店等,十分的全面,有需要的小伙伴可以参考下. 1. [代码]index.php <?php include ...
- md笔记——微信JS接口
微信js接口 隐藏微信中网页右上角按钮 document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { Weix ...
- 微信JS接口
微信JS接口 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置来源:http://www.cnblogs.com/txw1958/p/ ...
- 微信录音接口的调用以及amr文件转码MP3文件的实现
最近实现录音功能,主要涉及到录音的上传和下载,以及转码问题.微信,QQ默认的的音频文件是amr格式的,而播放器却不识别amr格式的音频,必须尽行转码.amr文件分为两种,一种是通用的amr格式,这种文 ...
- 微信支付接口 H5
php微信支付若干问题记录 1.缺少参数$key0$ 此问题的可能性有几种,大致有1.timeStamp这个参数应该是string类型,默认time是int 2.确实是参数缺少 比如:prepay_ ...
- asp.net mvc 如何调用微信jssdk接口:分享到微信朋友(圈)| 分享到qq空间
如何在asp.net mvc 项目里, 调用微信jssdk接口,现实功能: 分享到微信朋友(圈)| 分享到qq空间 1 创建一个Action,准备一些数据,初始化数据(签名): /// <sum ...
- 微信公开课发布微信官方教程:教你用好微信JS-SDK接口
微信公众平台开放JS-SDK(微信内网页开发工具包),说明文档已经有相关使用方法和示例了,很多同学觉得不是很直观,为此微信公开课发布微信官方教程:教你用好微信JS-SDK接口. 1.分享类接口:支持获 ...
- 官方教程:教你用好微信JS-SDK接口
微信开放JS-SDK接口,开发者和行业用户可谓是欢欣鼓舞.奔走相告,目测将激起一大波第三方开发商的创新产品!真真是H5开发者的利好!但也有用户表示,还不了解JS-SDK接口到底是啥,究竟怎么用.现在, ...
- php微信支付接口开发程序
php微信支付接口开发程序讲解 微信支付接口现在也慢慢的像支付宝一个可以利用api接口来实现第三方网站或应用进行支付了, 下文整理了一个php微信支付接口开发程序并且己测试,有兴趣的朋友可进入参考. ...
随机推荐
- Vertica 项目常用代码
1.查看目录下面有多少文件数 ls -l |grep "^-"|wc -l 思路很明显了,ls后通过grep进行过滤判断是文件还是文件夹, 如果是判断文件夹,可以使用ls -l | ...
- Oracle错误日志:ORA-00257
今天下午刚启动程序,就报以下错误: Caused by: java.sql.SQLException: ORA-00257: 归档程序错误.在释放之前仅限于内部连接. 经查,是oracle数据库日志满 ...
- Selenium2怎么调用selenium1中方法
虽然selenium1.0已经成为过去时,现在都用selenium2.0,但是如果想要在代码中调用selenium1.0的api怎么办,看下面 WebDriver driver = new Chrom ...
- jemter的使用(二)
在上篇文章中介绍了如何在jmeter中添加请求,并执行查看结果,下面介绍一下,在运行时需要用到的一些管理器 一.HTTP信息头管理器 1.添加信息头管理器 2.添加变量和值,如:Content-Typ ...
- Zbrush遮罩边界该怎么实现羽化和锐化
很多情况下为了雕刻制图需要,在ZBrush®中不仅要使用边缘清晰的遮罩,有时还要将遮罩边缘变得模糊,做羽化效果.那么如何在ZBrush中实现羽化遮罩效果或锐化遮罩效果,本文将做详细讲解. 若有疑问可直 ...
- HDU 4409 Family Name List --乱搞、LCA
题意: 给出一些名字,名字间有父子关系,有三种操作: 1.按祖先到后代,兄弟间按字典序由小到大排序,然后输出 2.求某个节点的兄弟节点有多少个,包括自己(注意,根节点的兄弟节点是1) 3.求节点a和b ...
- UVALive 6263 The Dragon and the knights --统计,直线分平面
题意:给n条直线,将一个平面分成很多个部分,再给m个骑士的坐标,在一个部分内只要有一个骑士即可保护该部分,问给出的m个骑士是不是保护了所有部分. 解法:计算每个骑士与每条直线的位置关系(上面还是下面) ...
- Lua笔记(1)
今天开始学习Lua,下面把一些重点记下来: 单行注释-- ,多行注释 --[[ ....... --]] Lua中false和nil表示条件判断的假,其余的,包括空字符串,0,都表示真. Lua没 ...
- (转载)java多态(2)-------Java转型(向上或向下转型)
5.13.1 向上转型 我们在现实中常常这样说:这个人会唱歌.在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们更倾向于使用抽象概念“人”.再例如,麻雀是鸟类的一种(鸟类的子类), ...
- Mac必装app-持续更新
所有软件都是免费,或者有破解版 都可以在google上***for mac 搜索到 Google Chrome Microsoft Office Evernote Skype Alfred AppCl ...