跳转到: 导航, 搜索
(未显示1个用户的17个中间版本)
第1行: 第1行:
=JS SDK=
+
=JS SDK 2020=
  
 
<div class="wiki_txtJ">
 
<div class="wiki_txtJ">
JS SDK for OAuth2.0是线上JS SDK的升级版本([[Weibo-JS|V1版JS SDK]]),它较之前版本有较大改变:
+
JS SDK 2020 是微博开放平台最新版的、针对移动端网页的SDK,它较之前版本有较大改变:
  
 
<ul class="wiki_indent_list">
 
<ul class="wiki_indent_list">
<li clas="wiki_indent_item">1、它去掉了部署在第三方的xd.html跨域文件,使开发者开发使用更加简单方便;</li>
+
<li clas="wiki_indent_item">1、聚焦移动端H5场景,去除了原来PC时代的旧组件;</li>
<li clas="wiki_indent_item">2、Appkey的传递方式由原来的json方式改变为通过参数传递方式;</li>
+
<li clas="wiki_indent_item">2、分享、关注功能,适配多场景,无论是在微博、微信、手机浏览器,还是PC上,都可以方便使用;</li>
<li clas="wiki_indent_item">3、为兼容之前JSSDK,该版JSSDK的命名空间由原来的WB改变为WB2;</li>
+
<li clas="wiki_indent_item">3、采用开放标签,样式完全由开发者自己控制;</li>
<li clas="wiki_indent_item">4、该版本将Js widget内置其中,用户无需再去单独引用JS和CSS,只需调用相应的js widget方法即可;</li>
+
<li clas="wiki_indent_item">4、更加安全,因此去除了原来的JS前端直接授权、直接调接口的功能,防止数据外泄,因此页面授权功能需要开发者按照标准授权流程接入,调用开放接口则需要放在服务端完成;</li>
<li clas="wiki_indent_item">5、支持通过版本号调用js widget,以便不同开发者不同的需要;</li>
+
 
</ul>
 
</ul>
  
  
下面我们来一起体验一下这些特性。你也可以浏览微博JS SDK的[http://weibojs.com/ 官方支持站],查看更加细致的文档。
+
下面我们来一起体验一下这些特性。
 +
 
 +
 
 +
<div style="width:230px;margin:30px auto 0;">
 +
{{Img_polaroid|src=https://wx2.sinaimg.cn/large/53b515f0ly1glxt9dys97j208c08c3yd.jpg}}
 +
</div>
 
</div>
 
</div>
 +
  
  
第20行: 第25行:
  
 
<div class="wiki_txtJ">
 
<div class="wiki_txtJ">
如果你没有AppKey请先在开放平台网站点击网站接入添加新网站,[http://open.weibo.com/connect 申请入口]。
+
如果你没有AppKey请先在开放平台网站,注册自己的应用,[https://open.weibo.com/connect 申请入口]。
 
</div>
 
</div>
  
  
<div class="wiki_title_withline">1、网站接入绑定域名</div>
+
<div class="wiki_title_withline">1、绑定安全域名</div>
  
 
<div style="margin:15px 0;">
 
<div style="margin:15px 0;">
为了保证你的应用或网站的安全,在使用Weibo JS SDK时,需要你在应用信息页面为该应用选定绑定域名功能,并绑定你的域名,我们将以此域名来判定Weibo JS SDK API请求来源的合法性,不合法的请求将被拒绝。
+
在使用JS SDK 2020时,需要为该应用绑定安全域名,其中微博客户端JS 接口将以此域名来进行校验,如果你不打算使用微博客户端JS 接口可以跳过此步骤。
  
  
绑定域名的操作可以在应用创建页面及编辑页面完成。选择“绑定域名”,填入域名提交即可。
+
绑定安全域名的操作可以在 我的应用 的 高级信息 页面完成。
 
</div>
 
</div>
  
{{Img_polaroid|src=http://jssdk.sinaapp.com/img/step/step2.jpg}}
+
{{Img_polaroid|src=https://wx2.sinaimg.cn/large/53b515f0ly1gm4r8agxmuj20rk0ex44k.jpg}}
  
  
<div class="wiki_title_withline">2、增加命名空间</div>
+
<div class="wiki_title_withline">2、引用JS SDK 2020文件</div>
  
 
<div style="margin:15px 0;">
 
<div style="margin:15px 0;">
在您页面的HTML标签中增加XML命名空间。
+
在你的页面部署 wbsdk.js 文件,同时,如果你的页面编码不是UTF-8,请添加charset="utf-8"属性。
 
</div>
 
</div>
  
 
<div class="code_type">HTML</div>
 
<div class="code_type">HTML</div>
 
<pre class="brush:html">
 
<pre class="brush:html">
<html xmlns:wb="http://open.weibo.com/wb">
+
<script src="https://open.weibo.com/views/js/wbsdk.js" type="text/javascript" charset="utf-8"></script>
 
</pre>
 
</pre>
 +
 +
<div style="margin:15px 0;">
 +
支持使用 AMD/CMD 标准模块加载方法加载。
 +
</div>
  
  
<div class="wiki_title_withline">3、引用JS SDK文件</div>
+
<div class="wiki_title_withline">3、初始化JS SDK 2020</div>
  
 
<div style="margin:15px 0;">
 
<div style="margin:15px 0;">
在你的页面部署wb.js,同时,如果你的页面编码不是UTF-8,请添加charset="utf-8"属性。
+
通过 wb.init 接口注入权限验证配置,所有需要使用微博客户端内JS SDK 的页面必须先注入配置信息,否则将无法调用。如果你不打算使用微博客户端JS 接口可以采用简易初始化方法。
 
</div>
 
</div>
  
<div class="code_type">HTML</div>
+
<div style="margin:15px 0;">
<pre class="brush:html">
+
'''完全初始化,使用微博客户端JS 接口与开放标签时,需要完全初始化:'''
<script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=YOUR APPKEY" type="text/javascript" charset="utf-8"></script>
+
</div>
 +
 
 +
<div class="code_type">Javascript</div>
 +
<pre class="brush:js">
 +
wb.init({
 +
debug: false,
 +
appkey: '',
 +
timestamp: ,
 +
noncestr: '',
 +
signature: '',
 +
scope: [
 +
'getNetworkType',
 +
'setBrowserTitle',
 +
'setSharingContent',
 +
'openMenu',
 +
'scanQRCode',
 +
'pickContact'
 +
]
 +
});
 
</pre>
 
</pre>
  
 
<div style="margin:15px 0;">
 
<div style="margin:15px 0;">
如果你的应用处于开发调试过程,建议使用JSSDK的调试模式,开启调试模式,只需增加一个参数debug=true即可,JSSDK会在浏览器的控制台或自带的JS调试工具中输出相关的日志信息,以方便调试。
+
其中,配置参数,debug:开启调试模式,appkey:应用唯一标识,timestamp:生成签名的时间戳,noncestr:生成签名的随机串,signature:签名,scope:需要使用的JS接口列表。
 
</div>
 
</div>
  
<div class="code_type">HTML</div>
+
<div style="margin:15px 0;">
<pre class="brush:html">
+
'''简易初始化,不使用微博客户端JS 接口,只使用开放标签时,可以简化初始方法,减少开发难度:'''
<script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=YOUR APPKEY&debug=true" type="text/javascript" charset="utf-8"></script>
+
</div>
 +
 
 +
<div class="code_type">Javascript</div>
 +
<pre class="brush:js">
 +
wb.init({
 +
appkey: ''
 +
});
 
</pre>
 
</pre>
  
 +
<div style="margin:15px 0;">
 +
如果你的应用处于开发调试过程,建议使用JS SDK 2020的调试模式,可以在初始化时,配置 debug 为 true,开启调试模式,此时在调用出错时,出错信息将通过 alert 弹出,方便在移动端调试。
 +
</div>
  
<div class="wiki_title_withline">4、开始使用JS SDK</div>
+
<div class="code_type">Javascript</div>
 +
<pre class="brush:js">
 +
wb.init({
 +
    debug: true,
 +
    ...
 +
});
 +
</pre>
  
 
<div style="margin:15px 0;">
 
<div style="margin:15px 0;">
调用JSSDK访问API接口。
+
签名算法见文档后面的说明,JS 接口的说明见后面。
 +
</div>
 +
 
 +
 
 +
<div class="wiki_title_withline">4、通过 ready 接口处理成功验证</div>
 +
 
 +
<div style="margin:15px 0;">
 +
init 初始化后会执行 ready 方法,所有JS 接口调用都必须在 ready 接口获得结果之后。如果你没有使用微博客户端JS 接口可以跳过此步骤。
 
</div>
 
</div>
  
 
<div class="code_type">Javascript</div>
 
<div class="code_type">Javascript</div>
 
<pre class="brush:js">
 
<pre class="brush:js">
WB2.anyWhere(function(W){
+
wb.ready(function () {
    W.parseCMD("/users/show.json", function(sResult, bStatus){
+
alert("## init success");
        try{
+
            //to do something...
+
        }catch(e){}
+
    },{
+
        uid: '123456789'
+
    }{
+
        method: 'get'
+
    });
+
 
});
 
});
 
</pre>
 
</pre>
  
 
<div style="margin:15px 0;">
 
<div style="margin:15px 0;">
部署微博组件。
+
init 是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在 ready 函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在 ready 函数中。
 
</div>
 
</div>
 +
 +
 +
<div class="wiki_title_withline">5、通过 error 接口处理失败验证</div>
 +
 +
<div style="margin:15px 0;">
 +
初始化失败的处理。如果你没有使用微博客户端JS 接口可以跳过此步骤。
 +
</div>
 +
 +
<div class="code_type">Javascript</div>
 +
<pre class="brush:js">
 +
wb.error(function (res) {
 +
alert("## init error: " + res);
 +
});
 +
</pre>
 +
 +
<div style="margin:15px 0;">
 +
init 初始化失败会执行 error 函数,如签名过期导致验证失败,错误信息可以在返回的 res 参数中查看,可以在这里更新签名,重新尝试初始化。
 +
</div>
 +
 +
 +
 +
==开放标签==
 +
 +
<div class="wiki_txtJ">开放标签类似原来的组件,目前主要是分享、关注功能。</div>
 +
 +
 +
<div class="wiki_title_withline">分享开放标签</div>
 +
 +
<div class="wiki_txtJ">分享当前页面到微博,适配各种场景。</div>
 +
 +
<div style="margin:15px 0;">'''示例'''</div>
  
 
<div class="code_type">HTML</div>
 
<div class="code_type">HTML</div>
 
<pre class="brush:html">
 
<pre class="brush:html">
<wb:share-button type="button" size="middle"> </wb:share-button>
+
<wb-share-button>分享到微博</wb-share-button>
 
</pre>
 
</pre>
  
 +
<div style="margin:15px 0;">开放标签中的样式,完全由开发者自己控制,例如。</div>
  
==JS SDK公开方法及说明==
+
<div class="code_type">HTML</div>
 +
<pre class="brush:html">
 +
<wb-share-button><div class="myStyle">分享到微博</div></wb-share-button>
 +
</pre>
  
<div class="wiki_txtJ">JS SDK公开方法。</div>
+
<div style="margin:15px 0;">指定分享的内容和页面地址,可以通过 data:title,data:url 属性标签完成自定义,例如。</div>
  
 +
<div class="code_type">HTML</div>
 +
<pre class="brush:html">
 +
<wb-share-button data:title="title" data:url="url">分享到微博</wb-share-button>
 +
</pre>
  
<div class="wiki_title_withline">WB2.login(callback)</div>
+
<div style="margin:15px 0;">如果需要在分享的时候,指定一张分享图片,可以通过 data:pic 属性标签指定图片的地址,例如。</div>
  
<div class="wiki_txtJ">微博登录认证功能。</div>
+
<div class="code_type">HTML</div>
 +
<pre class="brush:html">
 +
<wb-share-button data:pic="https://wx2.sinaimg.cn/large/53b515f0ly1glgemvpjwfj20gi0aw114.jpg">分享到微博</wb-share-button>
 +
</pre>
 +
 
 +
 
 +
<div class="wiki_title_withline">关注开放标签</div>
 +
 
 +
<div class="wiki_txtJ">关注你的微博账号,适配各种场景。</div>
 +
 
 +
<div style="margin:15px 0;">'''示例'''</div>
 +
 
 +
<div class="code_type">HTML</div>
 +
<pre class="brush:html">
 +
<wb-follow-account data:uid="1904178193">在微博上关注我</wb-follow-account>
 +
</pre>
 +
 
 +
<div style="margin:15px 0;">指定要关注的微博账号,通过 data:uid 属性标签完成。</div>
 +
 
 +
<div style="margin:15px 0;">开放标签中的样式,完全由开发者自己控制,例如。</div>
 +
 
 +
<div class="code_type">HTML</div>
 +
<pre class="brush:html">
 +
<wb-follow-account data:uid="1904178193"><div class="myStyle">在微博上关注我</div></wb-follow-account>
 +
</pre>
 +
 
 +
<div style="margin:15px 0;">当你的页面在微博客户端内打开并进行关注时,可以通过微博客户端JS 接口,获取到关注结果的回调事件,具体请参见下面的 微博客户端JS 接口 - 监听关注回调事件。</div>
 +
 
 +
 
 +
 
 +
==微博客户端内JS 接口说明==
 +
 
 +
<div class="wiki_txtJ">微博客户端JS 接口。</div>
 +
 
 +
 
 +
<div class="wiki_title_withline">wb.followCallBack</div>
 +
 
 +
<div class="wiki_txtJ">监听关注回调事件。</div>
  
 
<div style="margin:15px 0;">'''示例'''</div>
 
<div style="margin:15px 0;">'''示例'''</div>
第113行: 第230行:
 
<div class="code_type">Javascript</div>
 
<div class="code_type">Javascript</div>
 
<pre class="brush:js">
 
<pre class="brush:js">
WB2.logout(function() {
+
wb.followCallBack({
    //callback function
+
complete: function (res) {
 +
alert("## followCallBack event: " + JSON.stringify(res));
 +
}
 
});
 
});
 
</pre>
 
</pre>
第122行: 第241行:
 
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 
<html><colgroup></colgroup></html>
 
<html><colgroup></colgroup></html>
!width="16%"|参数名称
+
!width="20%"|参数名称
!width="13%"|类型
+
!width="20%"|类型
!width="13%"|默认值
+
!width="60%"|说明描述
!width="13%"|是否必选
+
!width="45%"|说明描述
+
 
|-
 
|-
|callback
+
|complete
 
|Function
 
|Function
|
+
|当用户进行关注操作时,接收关注结果事件的回调函数。
|否
+
|登录后的回调函数。
+
 
|}
 
|}
 +
 +
<div style="margin:15px 0;">'''返回值'''</div>
 +
 +
<div style="margin:15px 0;">'''用户取消操作,没有完成关注'''</div>
 +
 +
<div class="code_type">Javascript</div>
 +
<pre class="brush:js">
 +
{
 +
"result": false,
 +
"message": "USER_CANCELLED"
 +
}
 +
</pre>
 +
 +
<div style="margin:15px 0;">'''用户完成了关注,同时返回该用户的UID'''</div>
 +
 +
<div class="code_type">Javascript</div>
 +
<pre class="brush:js">
 +
{
 +
"result": true,
 +
"uid": "10568"
 +
}
 +
</pre>
 +
 +
<div style="margin:15px 0;">'''用户已经关注过'''</div>
 +
 +
<div class="code_type">Javascript</div>
 +
<pre class="brush:js">
 +
{
 +
"result": false,
 +
"message": "IS_FOLLOWING"
 +
}
 +
</pre>
 +
 +
<div style="margin:15px 0;">该关注回调事件,只能监听通过关注开放标签进行关注这一场景,其他场景的关注事件不会在此返回回调事件。</div>
 +
 +
<div style="margin:15px 0;">如果采用的是简易初始化模式,则不能使用微博客户端JS 接口,也就无法进行关注回调事件的监听,但关注功能本身不受影响,如果你需要获取关注回调事件,则请使用完全初始化模式。</div>
  
  
<div class="wiki_title_withline">WB2.logout(callback)</div>
+
<div class="wiki_title_withline">wb.getNetworkType</div>
  
<div class="wiki_txtJ">退出微博登录功能。</div>
+
<div class="wiki_txtJ">获取网络类型。</div>
  
 
<div style="margin:15px 0;">'''示例'''</div>
 
<div style="margin:15px 0;">'''示例'''</div>
第144行: 第295行:
 
<div class="code_type">Javascript</div>
 
<div class="code_type">Javascript</div>
 
<pre class="brush:js">
 
<pre class="brush:js">
WB2.logout(function() {
+
wb.getNetworkType({
    //callback function
+
success: function (res) {
 +
alert("## getNetworkType success: " + JSON.stringify(res));
 +
},
 +
fail: function (res) {
 +
alert("## getNetworkType fail: " + JSON.stringify(res));
 +
}
 
});
 
});
 
</pre>
 
</pre>
第153行: 第309行:
 
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 
<html><colgroup></colgroup></html>
 
<html><colgroup></colgroup></html>
!width="16%"|参数名称
+
!width="20%"|参数名称
!width="13%"|类型
+
!width="20%"|类型
!width="13%"|默认值
+
!width="60%"|说明描述
!width="13%"|是否必选
+
!width="45%"|说明描述
+
 
|-
 
|-
|callback
+
|success
 
|Function
 
|Function
|
+
|调用成功后的回调函数。
|
+
|-
|退出登录后的回调函数。
+
|fail
 +
|Function
 +
|调用失败后的回调函数。
 
|}
 
|}
  
 
+
<div style="margin:15px 0;">'''返回值'''</div>
<div class="wiki_title_withline">WB2.checkLogin()</div>
+
 
+
<div class="wiki_txtJ">检测微博登录状态,已登录返回true,未登录返回false。</div>
+
 
+
<div style="margin:15px 0;">'''示例'''</div>
+
  
 
<div class="code_type">Javascript</div>
 
<div class="code_type">Javascript</div>
 
<pre class="brush:js">
 
<pre class="brush:js">
var status = WB2.checkLogin();
+
{
alert(status);
+
"network_type": "wifi"
 +
}
 
</pre>
 
</pre>
  
  
<div class="wiki_title_withline">WB2.anyWhere(callback)</div>
+
<div class="wiki_title_withline">wb.setBrowserTitle</div>
  
<div class="wiki_txtJ">第三方与微博API进行数据交互及采用Js方式调用内置微博组件的入口函数。</div>
+
<div class="wiki_txtJ">设置页面标题。</div>
  
 
<div style="margin:15px 0;">'''示例'''</div>
 
<div style="margin:15px 0;">'''示例'''</div>
第188行: 第340行:
 
<div class="code_type">Javascript</div>
 
<div class="code_type">Javascript</div>
 
<pre class="brush:js">
 
<pre class="brush:js">
WB2.anyWhere(function(W){
+
wb.setBrowserTitle({
    //数据交互
+
title: "JS SDK DEMO",
    W.parseCMD(...);
+
success: function (res) {
   
+
alert("## setBrowserTitle success: " + JSON.stringify(res));
    //调用微博组件
+
},
    W.widget.hoverCard(...);
+
fail: function (res) {
    W.widget.followButton(...);
+
alert("## setBrowserTitle fail: " + JSON.stringify(res));
    ...
+
}
 
});
 
});
 
</pre>
 
</pre>
第203行: 第355行:
 
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 
<html><colgroup></colgroup></html>
 
<html><colgroup></colgroup></html>
!width="16%"|参数名称
+
!width="20%"|参数名称
!width="13%"|类型
+
!width="20%"|类型
!width="13%"|默认值
+
!width="60%"|说明描述
!width="13%"|是否必选
+
!width="45%"|说明描述
+
 
|-
 
|-
|callback
+
|title
 +
|String
 +
|需要设置的页面标题。
 +
|-
 +
|success
 +
|Function
 +
|调用成功后的回调函数。
 +
|-
 +
|fail
 
|Function
 
|Function
|
+
|调用失败后的回调函数。
|是
+
|回调函数,必需指定一个形参W,可以通过形参调用parseCMD读取开放平台API接口或者使用微博组件。具体见parseCMD及JS调用微博组件的说明。
+
 
|}
 
|}
  
 +
<div style="margin:15px 0;">'''错误码'''</div>
  
<div class="wiki_title_withline">W.parseCMD(uri, callback, args, opts)</div>
+
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 +
<html><colgroup></colgroup></html>
 +
!width="40%"|错误码
 +
!width="60%"|说明描述
 +
|-
 +
|MISSING_PARAMS
 +
|缺少title参数。
 +
|}
  
<div class="wiki_txtJ">第三方与开放平台API接口进行数据请求的函数,必须在WB2.anyWhere中通过W对象调用。</div>
+
 
 +
<div class="wiki_title_withline">wb.setSharingContent</div>
 +
 
 +
<div class="wiki_txtJ">设置在微博内分享到微信的内容。</div>
  
 
<div style="margin:15px 0;">'''示例'''</div>
 
<div style="margin:15px 0;">'''示例'''</div>
第225行: 第392行:
 
<div class="code_type">Javascript</div>
 
<div class="code_type">Javascript</div>
 
<pre class="brush:js">
 
<pre class="brush:js">
WB2.anyWhere(function(W){
+
wb.setSharingContent({
    //数据交互
+
icon: "https://img.t.sinajs.cn/t6/style/images/face/face_card_longwb.png",
    W.parseCMD('/users/show.json', function(oResult, bStatus) {
+
title: "SDK Sharing Content",
        if(bStatus) {
+
desc: "SDK Sharing Content",
            //to do something...
+
success: function (res) {
        }
+
alert("## setSharingContent success: " + JSON.stringify(res));
    }, {
+
},
        screen_name : '姚晨'
+
fail: function (res) {
    }, {
+
alert("## setSharingContent fail: " + JSON.stringify(res));
        method : 'get',
+
}
        cache_time : 30
+
    });
+
 
});
 
});
 
</pre>
 
</pre>
第244行: 第409行:
 
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 
<html><colgroup></colgroup></html>
 
<html><colgroup></colgroup></html>
!width="16%"|参数名称
+
!width="20%"|参数名称
!width="13%"|类型
+
!width="20%"|类型
!width="13%"|默认值
+
!width="60%"|说明描述
!width="13%"|是否必选
+
!width="45%"|说明描述
+
 
|-
 
|-
|uri
+
|icon
 
|String
 
|String
|
+
|分享到微信的卡片图标的图片地址。
|是
+
|传递给API接口的命令URI,如“/users/show.json”、“statuses/public_timeline.json”,请见 [[API|API文档]]。
+
 
|-
 
|-
|callback
+
|title
|Function
+
|String
|
+
|分享到微信的卡片标题。
|是
+
|请求API接口返回数据后的回调函数。默认返回两个参数,oResult:接口返回数据(JSON格式);bStatus:接口返回状态,true - 接口正常、false - 接口异常。
+
 
|-
 
|-
|args
+
|desc
|Object
+
|String
|
+
|分享到微信的卡片描述。
|是
+
|发起数据请求时,传递给API接口的参数对象。如“users/show.json”接口中的,uid、screen_name等。JSON格式。
+
 
|-
 
|-
|opts
+
|success
|Object
+
|Function
|{method: 'post', cache_time: 0}
+
|调用成功后的回调函数。
|
+
|-
|请求API接口的时候的附加属性,method:请求类型,默认为post;cache_time:数据缓存时间,默认为0,单位为秒。JSON格式。
+
|fail
 +
|Function
 +
|调用失败后的回调函数。
 
|}
 
|}
  
  
==JS组件说明及示例==
+
<div class="wiki_title_withline">wb.openMenu</div>
  
===微博连接按钮===
+
<div class="wiki_txtJ">打开分享菜单</div>
  
 +
<div style="margin:15px 0;">'''示例'''</div>
  
'''widget说明'''
+
<div class="code_type">Javascript</div>
 +
<pre class="brush:js">
 +
wb.openMenu({
 +
success: function (res) {
 +
alert("## openMenu success: " + JSON.stringify(res));
 +
},
 +
fail: function (res) {
 +
alert("## openMenu fail: " + JSON.stringify(res));
 +
}
 +
});
 +
</pre>
  
第三方与微博进行连接的按钮,可实现登录与退出功能。
+
<div style="margin:15px 0;">'''参数说明'''</div>
  
 +
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 +
<html><colgroup></colgroup></html>
 +
!width="20%"|参数名称
 +
!width="20%"|类型
 +
!width="60%"|说明描述
 +
|-
 +
|success
 +
|Function
 +
|调用成功后的回调函数。
 +
|-
 +
|fail
 +
|Function
 +
|调用失败后的回调函数。
 +
|}
  
'''参数说明'''
+
<div style="margin:15px 0;">'''返回值'''</div>
  
id:连接按钮元素ID,必填。
+
<div class="code_type">Javascript</div>
 +
<pre class="brush:js">
 +
{
 +
"selected_code": "1005",
 +
"selected_title": "朋友圈"
 +
}
 +
</pre>
  
type:连接按钮样式,是登录前的按钮样式[1-7]和登录后的样式[1-5]的组合,可选,默认为"3,2"
+
<div style="margin:15px 0;">'''错误码'''</div>
  
callback:回调函数对象,参数说明如下,
+
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 +
<html><colgroup></colgroup></html>
 +
!width="40%"|错误码
 +
!width="60%"|说明描述
 +
|-
 +
|USER_CANCELLED
 +
|用户直接关闭了菜单。
 +
|}
  
login: 登录后执行的回调函数,其参数为用户信息json对象;
 
  
logout: 退出登录后执行的回调函数;
+
<div class="wiki_title_withline">wb.shareToWxTimeline</div>
  
'''示例'''
+
<div class="wiki_txtJ">分享到微信朋友圈</div>
  
<pre>
+
<div style="margin:15px 0;">'''示例'''</div>
Html:<div id="wb_connect_btn"></div>
+
Script:
+
WB2.anyWhere(function(W){
+
    W.widget.connectButton({
+
        id: "wb_connect_btn",
+
        type: '3,2',
+
        callback : {
+
            login:function(o){
+
                alert(o.screen_name)
+
            },
+
            logout:function(){
+
                alert('logout');
+
            }
+
        }
+
    });
+
});
+
  
 +
<div class="code_type">Javascript</div>
 +
<pre class="brush:js">
 +
wb.shareToWxTimeline({
 +
success: function (res) {
 +
alert("## shareToWxTimeline success: " + JSON.stringify(res));
 +
},
 +
fail: function (res) {
 +
alert("## shareToWxTimeline fail: " + JSON.stringify(res));
 +
}
 +
});
 
</pre>
 
</pre>
  
'''示例:'''
+
<div style="margin:15px 0;">'''参数说明'''</div>
http://jssdk.sinaapp.com/demo/button/loginButton.php
+
  
===微博关注按钮===
+
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 +
<html><colgroup></colgroup></html>
 +
!width="20%"|参数名称
 +
!width="20%"|类型
 +
!width="60%"|说明描述
 +
|-
 +
|success
 +
|Function
 +
|调用成功后的回调函数。
 +
|-
 +
|fail
 +
|Function
 +
|调用失败后的回调函数。
 +
|}
  
'''widget说明'''
 
  
可实现用户之间的关注功能。
+
<div class="wiki_title_withline">wb.shareToWxMessage</div>
  
 +
<div class="wiki_txtJ">分享到微信好友</div>
  
'''参数说明'''
+
<div style="margin:15px 0;">'''示例'''</div>
 
+
id:绑定的标签的ID,必填。
+
 
+
nick_name:用户昵称,必填。
+
  
'''示例'''
+
<div class="code_type">Javascript</div>
<pre>
+
<pre class="brush:js">
Html:  <span id="wb_follow_btn"></span>
+
wb.shareToWxMessage({
Script:
+
success: function (res) {
WB2.anyWhere(function(W){
+
alert("## shareToWxMessage success: " + JSON.stringify(res));
    W.widget.followButton({
+
},
        'id': "wb_follow_btn" //关注按钮容器ID
+
fail: function (res) {
        'nick_name': '姚晨' //用户昵称
+
alert("## shareToWxMessage fail: " + JSON.stringify(res));
    });
+
}
 
});
 
});
 
</pre>
 
</pre>
  
'''示例:'''
+
<div style="margin:15px 0;">'''参数说明'''</div>
  
http://jssdk.sinaapp.com/demo/button/followButtonTag.html
+
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 +
<html><colgroup></colgroup></html>
 +
!width="20%"|参数名称
 +
!width="20%"|类型
 +
!width="60%"|说明描述
 +
|-
 +
|success
 +
|Function
 +
|调用成功后的回调函数。
 +
|-
 +
|fail
 +
|Function
 +
|调用失败后的回调函数。
 +
|}
  
===微博名片===
 
  
'''widget说明'''
+
<div class="wiki_title_withline">wb.scanQRCode</div>
  
显示用户名片,包括昵称、头像、关注数量、粉丝数量、微博数量、最新微博以及关注按钮功能等,支持单独处理及批量处理两种方式。
+
<div class="wiki_txtJ">扫描二维码</div>
  
 +
<div style="margin:15px 0;">'''示例'''</div>
  
'''参数说明'''
+
<div class="code_type">Javascript</div>
 +
<pre class="brush:js">
 +
wb.scanQRCode({
 +
success: function (res) {
 +
alert("## scanQRCode success: " + JSON.stringify(res));
 +
},
 +
fail: function (res) {
 +
alert("## scanQRCode fail: " + JSON.stringify(res));
 +
}
 +
});
 +
</pre>
  
id:要显示名片的元素ID,必填。
+
<div style="margin:15px 0;">'''参数说明'''</div>
  
tag:要处理的标签名称,如'a', 'span'等,默认为'a',即只对a标签进行处理(其他标签不做处理),选填。
+
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 +
<html><colgroup></colgroup></html>
 +
!width="20%"|参数名称
 +
!width="20%"|类型
 +
!width="60%"|说明描述
 +
|-
 +
|success
 +
|Function
 +
|调用成功后的回调函数。
 +
|-
 +
|fail
 +
|Function
 +
|调用失败后的回调函数。
 +
|}
  
search:是否为批量处理名片的标识, 为true时会自动识别指定标签里“@+昵称”,并进行批量替换,增加名片事件,为false时仅为单独定义。默认为false。
+
<div style="margin:15px 0;">'''返回值'''</div>
  
+
<div class="code_type">Javascript</div>
'''示例'''
+
<pre class="brush:js">
<pre>
+
{
Html:
+
"result": "http://weibo.com"
 +
}
 +
</pre>
  
单独定义:
+
<div style="margin:15px 0;">'''错误码'''</div>
<span id="card" href=" http://weibo.com " wb_screen_name="微博名称" >微博名称</span>
+
<a id="wb_uid" wb_user_id="1052981072" href="http://www.woiweb.net" >woiweb</a>
+
  
批量定义:
+
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
<div id="search">
+
<html><colgroup></colgroup></html>
    <a wb_screen_name="flashsoft" href="http://weibo.com">flashsoft</a>
+
!width="40%"|错误码
    @woiweb
+
!width="60%"|说明描述
</div>
+
|-
<div id="weibo_uid_area">
+
|USER_CANCELLED
    <a href="http://www.woiweb.net" wb_user_id="1052981072">woiweb</a>
+
|用户取消了扫描。
    <span wb_user_id="1639733600">金山</span>
+
|-
</div>
+
|SERVICE_FORBIDDEN
 +
|没有摄像头权限或用户不允许使用摄像头。
 +
|}
  
Script:
 
  
WB2.anyWhere(function(W){
+
<div class="wiki_title_withline">wb.pickContact</div>
    W.widget.hoverCard({
+
 
        id: "card"
+
<div class="wiki_txtJ">选择微博好友</div>
    });
+
 
    W.widget.hoverCard({
+
<div style="margin:15px 0;">'''示例'''</div>
        id: "search",
+
 
        search: true
+
<div class="code_type">Javascript</div>
});
+
<pre class="brush:js">
    W.widget.hoverCard({
+
wb.pickContact({
        id: "wb_uid"
+
count: 3,
    });
+
success: function (res) {
    W.widget.hoverCard({
+
alert("## pickContact success: " + JSON.stringify(res));
        id: "weibo_uid_area",
+
},
        tag: "span",
+
fail: function (res) {
        search: true
+
alert("## pickContact fail: " + JSON.stringify(res));
    });
+
}
 
});
 
});
 
</pre>
 
</pre>
  
'''示例:'''
+
<div style="margin:15px 0;">'''参数说明'''</div>
http://jssdk.sinaapp.com/demo/layer/card.html
+
  
===微博发布器===
+
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 +
<html><colgroup></colgroup></html>
 +
!width="20%"|参数名称
 +
!width="20%"|类型
 +
!width="60%"|说明描述
 +
|-
 +
|count
 +
|Int
 +
|可以选择的人数,例如,传1就是只能选一个人,最大不能超过10。
 +
|-
 +
|success
 +
|Function
 +
|调用成功后的回调函数。
 +
|-
 +
|fail
 +
|Function
 +
|调用失败后的回调函数。
 +
|}
  
'''widget说明'''
+
<div style="margin:15px 0;">'''返回值'''</div>
  
弹出微博发布器,发布微博。
+
<div class="code_type">Javascript</div>
 +
<pre class="brush:js">
 +
{
 +
"contacts": [{
 +
"uid": "1404376560",
 +
"screen_name": "zaku",
 +
"avatar_url": "https://tva2.sinaimg.cn/53b515f0jw1e8qgp5bmzyj2050050aa8.jpg"
 +
}]
 +
}
 +
</pre>
  
 +
<div style="margin:15px 0;">'''错误码'''</div>
  
'''参数说明'''
+
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 +
<html><colgroup></colgroup></html>
 +
!width="40%"|错误码
 +
!width="60%"|说明描述
 +
|-
 +
|USER_CANCELLED
 +
|用户直接取消了选择。
 +
|}
  
id : 绑定的标签的ID,必填。
 
  
button_type : 按钮样式red/gray,默认为red
 
  
button_size : big/middle/small,默认为middle
+
==JS SDK 2020 使用权限签名算法==
  
button_text : 自定义button文字,默认为“发布到微博”
+
<div class="wiki_txtJ">生成签名之前必须先了解一下 jsapi_ticket,jsapi_ticket 是网页用于调用微博客户端内JS接口的临时票据。正常情况下,jsapi_ticket 的有效期为7200秒。由于有效期内再次调用该接口会导致 ticket 刷新,旧的直接失效。因此频繁刷新 jsapi_ticket 有可能导致签名校验失败,影响自身业务,因此,建议开发者在自己的服务全局缓存 jsapi_ticket 。</div>
  
default_text : 文本框内容,默认为空
 
  
default_image : 预置图片地址,默认为空
+
<div class="wiki_title_withline">获取 jsapi_ticket 的接口</div>
  
toolbar : 工具栏[表情, 图片, 话题],默认为'face,image,topic',可增删工具栏模块和更换按钮位置
+
<div style="margin:15px 0;">接口为 POST 请求</div>
  
 
+
<div class="code_type">API</div>
'''示例'''
+
<pre class="brush:html">
<pre>
+
https://api.weibo.com/oauth2/js_ticket/generate?client_id=APPKEY&client_secret=APPSECRET
Html:  <a href="javascript:;" id="publish" >发表微博</a>
+
Script:
+
WB2.anyWhere(function(W){
+
    W.widget.publish({
+
        'id' : 'publish'
+
    });
+
});
+
 
</pre>
 
</pre>
  
'''示例:'''
+
<div style="margin:15px 0;">'''返回值'''</div>
  
http://jssdk.sinaapp.com/demo/layer/publish.html
+
<div class="code_type">JSON</div>
 +
<pre class="brush:js">
 +
{
 +
"result": true,
 +
"appkey": "",
 +
"js_ticket": "",
 +
"expire_time": 7199
 +
}
 +
</pre>
  
===微博好友选择器===
+
<div style="margin:15px 0;">其中,js_ticket 为需要获取的  jsapi_ticket  ,expire_time 为过期时间。</div>
  
'''widget说明'''
 
  
好友选择器,包括相互关注、我的粉丝、我关注的人三个标签,标签可配,支持联想输入功能,可快速选择所需好友,选择后点击确定即可得到已选择的好友的信息。
+
<div class="wiki_title_withline">签名算法</div>
  
 +
<div style="margin:15px 0;">
 +
签名生成规则如下:参与签名的字段包括 noncestr,有效的 jsapi_ticket,timestamp,url。对所有待签名参数按照字段名的 ASCII  码从小到大排序(字典序)后,使用 key1=value1&key2=value2… 的格式拼接成字符串。这里需要注意的是所有参数名均为小写字符,之后对字符串进行 sha1 加密,字段名和字段值都采用原始值,其中,url 为当前网页的完整地址,但是不包含 # 及其后面部分,也不要进行 URL 转义。
 +
</div>
  
'''参数说明'''
+
<div class="code_type">签名字符串</div>
 +
<pre class="brush:js">
 +
签名字符串 = "jsapi_ticket={jsapi_ticket}&noncestr={noncestr}&timestamp={timestamp}&url={url}"
 +
</pre>
  
id: 绑定的标签的ID,必填。
 
  
callback: 选择完成点击确定后执行的回调函数,参数为选择好友信息的数组对象。
+
<div class="code_type">签名</div>
 +
<pre class="brush:js">
 +
签名 = sha1(签名字符串)
 +
</pre>
  
limit: 限制选择好友数量,默认为-1,不限制选择数量。
+
<div style="margin:15px 0;">
 +
签名用的 noncestr 和 timestamp 必须与 init 中的 noncestr 和 timestamp 相同。签名用的 url 必须是调用JS接口页面的完整地址。出于安全考虑,开发者必须在服务器端实现签名的逻辑。
 +
</div>
  
tab: 好友选择器标签配置,可选。
 
  
list: 显示的标签及顺序,[1:相互关注, 2:我的粉丝, 3:我关注的人],可以根据需要选择各种组合,还可定制顺序,如[1], [3,2]。
 
  
index: 默认展开的标签,默认为第一个标签。
+
==附录一、菜单按钮code==
  
 +
<div class="wiki_txtJ">菜单按钮 code 对照表</div>
  
<pre>
+
<div style="margin:15px 0;">'''code'''</div>
Html:  <input id="but" type="button" value=" 显示选择器 " />
+
Script:
+
//回调函数,返回选择结果
+
function cbk(data){
+
    //do something.
+
}
+
WB2.anyWhere(function(W){
+
    W.widget.selector({
+
'id' : "but", //必选
+
'callback' : cbk
+
    });
+
});
+
</pre>
+
  
 +
{|width="100%" border="0" cellspacing="0" cellpadding="0" class="wiki_table"
 +
<html><colgroup></colgroup></html>
 +
!width="40%"|编码
 +
!width="60%"|说明描述
 +
|-
 +
|1001
 +
|分享到微博。
 +
|-
 +
|1003
 +
|分享到微博群和私信。
 +
|-
 +
|1004
 +
|分享到微信好友。
 +
|-
 +
|1005
 +
|分享到微信朋友圈。
 +
|-
 +
|1101
 +
|分享到短信。
 +
|-
 +
|1012
 +
|分享到支付宝好友。
 +
|-
 +
|1010
 +
|分享到QQ。
 +
|-
 +
|1011
 +
|分享到QQ空间。
 +
|-
 +
|1102
 +
|分享到邮件。
 +
|}
  
'''示例:'''
 
  
http://jssdk.sinaapp.com/demo/layer/selector.html
 
  
  

2022年8月8日 (一) 13:49的版本

JS SDK 2020

JS SDK 2020 是微博开放平台最新版的、针对移动端网页的SDK,它较之前版本有较大改变:

  • 1、聚焦移动端H5场景,去除了原来PC时代的旧组件;
  • 2、分享、关注功能,适配多场景,无论是在微博、微信、手机浏览器,还是PC上,都可以方便使用;
  • 3、采用开放标签,样式完全由开发者自己控制;
  • 4、更加安全,因此去除了原来的JS前端直接授权、直接调接口的功能,防止数据外泄,因此页面授权功能需要开发者按照标准授权流程接入,调用开放接口则需要放在服务端完成;


下面我们来一起体验一下这些特性。



开发指南

如果你没有AppKey请先在开放平台网站,注册自己的应用,申请入口


1、绑定安全域名

在使用JS SDK 2020时,需要为该应用绑定安全域名,其中微博客户端JS 接口将以此域名来进行校验,如果你不打算使用微博客户端JS 接口可以跳过此步骤。


绑定安全域名的操作可以在 我的应用 的 高级信息 页面完成。


2、引用JS SDK 2020文件

在你的页面部署 wbsdk.js 文件,同时,如果你的页面编码不是UTF-8,请添加charset="utf-8"属性。

HTML
<script src="https://open.weibo.com/views/js/wbsdk.js" type="text/javascript" charset="utf-8"></script>

支持使用 AMD/CMD 标准模块加载方法加载。


3、初始化JS SDK 2020

通过 wb.init 接口注入权限验证配置,所有需要使用微博客户端内JS SDK 的页面必须先注入配置信息,否则将无法调用。如果你不打算使用微博客户端JS 接口可以采用简易初始化方法。

完全初始化,使用微博客户端JS 接口与开放标签时,需要完全初始化:

Javascript
wb.init({
	debug: false,
	appkey: '',
	timestamp: ,
	noncestr: '',
	signature: '',
	scope: [
		'getNetworkType',
		'setBrowserTitle',
		'setSharingContent',
		'openMenu',
		'scanQRCode',
		'pickContact'
	]
});

其中,配置参数,debug:开启调试模式,appkey:应用唯一标识,timestamp:生成签名的时间戳,noncestr:生成签名的随机串,signature:签名,scope:需要使用的JS接口列表。

简易初始化,不使用微博客户端JS 接口,只使用开放标签时,可以简化初始方法,减少开发难度:

Javascript
wb.init({
	appkey: ''
});

如果你的应用处于开发调试过程,建议使用JS SDK 2020的调试模式,可以在初始化时,配置 debug 为 true,开启调试模式,此时在调用出错时,出错信息将通过 alert 弹出,方便在移动端调试。

Javascript
wb.init({
    debug: true,
    ...
});

签名算法见文档后面的说明,JS 接口的说明见后面。


4、通过 ready 接口处理成功验证

init 初始化后会执行 ready 方法,所有JS 接口调用都必须在 ready 接口获得结果之后。如果你没有使用微博客户端JS 接口可以跳过此步骤。

Javascript
wb.ready(function () {
	alert("## init success");
});

init 是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在 ready 函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在 ready 函数中。


5、通过 error 接口处理失败验证

初始化失败的处理。如果你没有使用微博客户端JS 接口可以跳过此步骤。

Javascript
wb.error(function (res) {
	alert("## init error: " + res);
});

init 初始化失败会执行 error 函数,如签名过期导致验证失败,错误信息可以在返回的 res 参数中查看,可以在这里更新签名,重新尝试初始化。


开放标签

开放标签类似原来的组件,目前主要是分享、关注功能。


分享开放标签
分享当前页面到微博,适配各种场景。
示例
HTML
<wb-share-button>分享到微博</wb-share-button>
开放标签中的样式,完全由开发者自己控制,例如。
HTML
<wb-share-button><div class="myStyle">分享到微博</div></wb-share-button>
指定分享的内容和页面地址,可以通过 data:title,data:url 属性标签完成自定义,例如。
HTML
<wb-share-button data:title="title" data:url="url">分享到微博</wb-share-button>
如果需要在分享的时候,指定一张分享图片,可以通过 data:pic 属性标签指定图片的地址,例如。
HTML
<wb-share-button data:pic="https://wx2.sinaimg.cn/large/53b515f0ly1glgemvpjwfj20gi0aw114.jpg">分享到微博</wb-share-button>


关注开放标签
关注你的微博账号,适配各种场景。
示例
HTML
<wb-follow-account data:uid="1904178193">在微博上关注我</wb-follow-account>
指定要关注的微博账号,通过 data:uid 属性标签完成。
开放标签中的样式,完全由开发者自己控制,例如。
HTML
<wb-follow-account data:uid="1904178193"><div class="myStyle">在微博上关注我</div></wb-follow-account>
当你的页面在微博客户端内打开并进行关注时,可以通过微博客户端JS 接口,获取到关注结果的回调事件,具体请参见下面的 微博客户端JS 接口 - 监听关注回调事件。


微博客户端内JS 接口说明

微博客户端JS 接口。


wb.followCallBack
监听关注回调事件。
示例
Javascript
wb.followCallBack({
	complete: function (res) {
		alert("## followCallBack event: " + JSON.stringify(res));
	}
});
参数说明
参数名称 类型 说明描述
complete Function 当用户进行关注操作时,接收关注结果事件的回调函数。
返回值
用户取消操作,没有完成关注
Javascript
{
	"result": false,
	"message": "USER_CANCELLED"
}
用户完成了关注,同时返回该用户的UID
Javascript
{
	"result": true,
	"uid": "10568"
}
用户已经关注过
Javascript
{
	"result": false,
	"message": "IS_FOLLOWING"
}
该关注回调事件,只能监听通过关注开放标签进行关注这一场景,其他场景的关注事件不会在此返回回调事件。
如果采用的是简易初始化模式,则不能使用微博客户端JS 接口,也就无法进行关注回调事件的监听,但关注功能本身不受影响,如果你需要获取关注回调事件,则请使用完全初始化模式。


wb.getNetworkType
获取网络类型。
示例
Javascript
wb.getNetworkType({
	success: function (res) {
		alert("## getNetworkType success: " + JSON.stringify(res));
	},
	fail: function (res) {
		alert("## getNetworkType fail: " + JSON.stringify(res));
	}
});
参数说明
参数名称 类型 说明描述
success Function 调用成功后的回调函数。
fail Function 调用失败后的回调函数。
返回值
Javascript
{
	"network_type": "wifi"
}


wb.setBrowserTitle
设置页面标题。
示例
Javascript
wb.setBrowserTitle({
	title: "JS SDK DEMO",
	success: function (res) {
		alert("## setBrowserTitle success: " + JSON.stringify(res));
	},
	fail: function (res) {
		alert("## setBrowserTitle fail: " + JSON.stringify(res));
	}
});
参数说明
参数名称 类型 说明描述
title String 需要设置的页面标题。
success Function 调用成功后的回调函数。
fail Function 调用失败后的回调函数。
错误码
错误码 说明描述
MISSING_PARAMS 缺少title参数。


wb.setSharingContent
设置在微博内分享到微信的内容。
示例
Javascript
wb.setSharingContent({
	icon: "https://img.t.sinajs.cn/t6/style/images/face/face_card_longwb.png",
	title: "SDK Sharing Content",
	desc: "SDK Sharing Content",
	success: function (res) {
		alert("## setSharingContent success: " + JSON.stringify(res));
	},
	fail: function (res) {
		alert("## setSharingContent fail: " + JSON.stringify(res));
	}
});
参数说明
参数名称 类型 说明描述
icon String 分享到微信的卡片图标的图片地址。
title String 分享到微信的卡片标题。
desc String 分享到微信的卡片描述。
success Function 调用成功后的回调函数。
fail Function 调用失败后的回调函数。


wb.openMenu
打开分享菜单
示例
Javascript
wb.openMenu({
	success: function (res) {
		alert("## openMenu success: " + JSON.stringify(res));
	},
	fail: function (res) {
		alert("## openMenu fail: " + JSON.stringify(res));
	}
});
参数说明
参数名称 类型 说明描述
success Function 调用成功后的回调函数。
fail Function 调用失败后的回调函数。
返回值
Javascript
{
	"selected_code": "1005",
	"selected_title": "朋友圈"
}
错误码
错误码 说明描述
USER_CANCELLED 用户直接关闭了菜单。


wb.shareToWxTimeline
分享到微信朋友圈
示例
Javascript
wb.shareToWxTimeline({
	success: function (res) {
		alert("## shareToWxTimeline success: " + JSON.stringify(res));
	},
	fail: function (res) {
		alert("## shareToWxTimeline fail: " + JSON.stringify(res));
	}
});
参数说明
参数名称 类型 说明描述
success Function 调用成功后的回调函数。
fail Function 调用失败后的回调函数。


wb.shareToWxMessage
分享到微信好友
示例
Javascript
wb.shareToWxMessage({
	success: function (res) {
		alert("## shareToWxMessage success: " + JSON.stringify(res));
	},
	fail: function (res) {
		alert("## shareToWxMessage fail: " + JSON.stringify(res));
	}
});
参数说明
参数名称 类型 说明描述
success Function 调用成功后的回调函数。
fail Function 调用失败后的回调函数。


wb.scanQRCode
扫描二维码
示例
Javascript
wb.scanQRCode({
	success: function (res) {
		alert("## scanQRCode success: " + JSON.stringify(res));
	},
	fail: function (res) {
		alert("## scanQRCode fail: " + JSON.stringify(res));
	}
});
参数说明
参数名称 类型 说明描述
success Function 调用成功后的回调函数。
fail Function 调用失败后的回调函数。
返回值
Javascript
{
	"result": "http://weibo.com"
}
错误码
错误码 说明描述
USER_CANCELLED 用户取消了扫描。
SERVICE_FORBIDDEN 没有摄像头权限或用户不允许使用摄像头。


wb.pickContact
选择微博好友
示例
Javascript
wb.pickContact({
	count: 3,
	success: function (res) {
		alert("## pickContact success: " + JSON.stringify(res));
	},
	fail: function (res) {
		alert("## pickContact fail: " + JSON.stringify(res));
	}
});
参数说明
参数名称 类型 说明描述
count Int 可以选择的人数,例如,传1就是只能选一个人,最大不能超过10。
success Function 调用成功后的回调函数。
fail Function 调用失败后的回调函数。
返回值
Javascript
{
	"contacts": [{
		"uid": "1404376560",
		"screen_name": "zaku",
		"avatar_url": "https://tva2.sinaimg.cn/53b515f0jw1e8qgp5bmzyj2050050aa8.jpg"
	}]
}
错误码
错误码 说明描述
USER_CANCELLED 用户直接取消了选择。


JS SDK 2020 使用权限签名算法

生成签名之前必须先了解一下 jsapi_ticket,jsapi_ticket 是网页用于调用微博客户端内JS接口的临时票据。正常情况下,jsapi_ticket 的有效期为7200秒。由于有效期内再次调用该接口会导致 ticket 刷新,旧的直接失效。因此频繁刷新 jsapi_ticket 有可能导致签名校验失败,影响自身业务,因此,建议开发者在自己的服务全局缓存 jsapi_ticket 。


获取 jsapi_ticket 的接口
接口为 POST 请求
API
https://api.weibo.com/oauth2/js_ticket/generate?client_id=APPKEY&client_secret=APPSECRET
返回值
JSON
{
	"result": true,
	"appkey": "",
	"js_ticket": "",
	"expire_time": 7199
}
其中,js_ticket 为需要获取的 jsapi_ticket ,expire_time 为过期时间。


签名算法

签名生成规则如下:参与签名的字段包括 noncestr,有效的 jsapi_ticket,timestamp,url。对所有待签名参数按照字段名的 ASCII 码从小到大排序(字典序)后,使用 key1=value1&key2=value2… 的格式拼接成字符串。这里需要注意的是所有参数名均为小写字符,之后对字符串进行 sha1 加密,字段名和字段值都采用原始值,其中,url 为当前网页的完整地址,但是不包含 # 及其后面部分,也不要进行 URL 转义。

签名字符串
签名字符串 = "jsapi_ticket={jsapi_ticket}&noncestr={noncestr}&timestamp={timestamp}&url={url}"


签名
签名 = sha1(签名字符串)

签名用的 noncestr 和 timestamp 必须与 init 中的 noncestr 和 timestamp 相同。签名用的 url 必须是调用JS接口页面的完整地址。出于安全考虑,开发者必须在服务器端实现签名的逻辑。


附录一、菜单按钮code

菜单按钮 code 对照表
code
编码 说明描述
1001 分享到微博。
1003 分享到微博群和私信。
1004 分享到微信好友。
1005 分享到微信朋友圈。
1101 分享到短信。
1012 分享到支付宝好友。
1010 分享到QQ。
1011 分享到QQ空间。
1102 分享到邮件。