javascript方式让自己的网站上发布评论同步到新浪微博

虽然新浪微博最近也没什么人气了,不过做网站运营还是必须在他上面做一些功夫。

下面是一个比较实用的需求

需求:在自己网站上发布评论的同时,也把信息同步到微博


花了1天时间来处理这个。一开始去查官网的api文档,他的demo都是要弹出他自己的登陆框,然后输入发布。和我的需求不同,我的需求是在我站内的输入框点击发布的时候,同时发布到站内和新浪微博。效果如下图。没有办法了,只能去看它的javascript的SDK源码,看一下的流程是怎么走了。两个文件大概5千行代码吧。现在抽离出核心的逻辑分享一下。

如下图

 


实现步骤:

1. 申请appkey ,在http://open.weibo.com/这里申请,和自己的域名绑定,因为发布消息的时候,会把appkey和http的referer做匹配,匹配正确了才会发布成功


2. 我采用的是JS方式,在头部引用js

<script src='http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=3196502474' charset="utf-8"></script>

3.执行逻辑

  (1). 点击checkbox,执行WB2.checkLogin(), 如果没有登陆或者授权,就会执行WB2.login(), 接口会检验现在用的appkey是不是页面的Referer已经注册绑定了

  (2). 点击发布按钮,执行WB2.Cookie.load(),在form中填入所有的值,用form表单进行跨域post传输。



4. 详细代码如下

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <script src="jquery-1.10.2.js"></script>

        <script src='http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=3196502474' charset="utf-8"></script>
    </head>
    <body>
        <fieldset>
            逻辑过程:<br><br>
            1. 点击checkbox,执行WB2.checkLogin(), 如果没有登陆或者授权,就会执行WB2.login(), 接口会检验现在用的appkey是不是页面的Referer已经注册绑定了<br><br>
            2. 点击发布按钮,执行WB2.Cookie.load(),在form中填入所有的值,用form表单进行跨域post传输。<br><br>

            WB2.Cookie.load()<br>
            Object {access_token: "2.00nCtGDCuKRwQB7d69ad7e330xX2vl", refresh_token: "", expires_in: "583292", uid: "1878236233", status: "1"}<br><br>
        </fieldset>
        <br>
        <textarea name="" id="content" cols="30" rows="10"></textarea>
        <br>
        同时发布到微博:<input type="checkbox" id="publishToweibo">   <button id="publish">发布</button>

        <!-- 隐藏的方式发送跨域请求 start -->
        <iframe src="" frameborder="0" id="myIframe" height="0"></iframe>
        <form method="post" action="http://service.t.sina.com.cn/widget/jssdk/aj_addmblog.php" target="myIframe" id="weiboForm">
            <input type="hidden" name="pic_id" value="">
            <input type="hidden" name="content" value="">
            <input type="hidden" name="uid" value="">
            <input type="hidden" name="appkey" value="3196502474">
            <input type="hidden" name="access_token" value="">
            <input type="hidden" name="cbkIndex" value="cbk_1">
        </form>
        <!-- 隐藏的方式发送跨域请求 end -->

        <script>
            // 如果有登陆了,就把checkbox勾上
            if(WB2.checkLogin()){
                $('#publishToweibo').prop('checked',true)
            }

            // 勾上checkbox,检查是否登陆,如果没有登陆,就走登陆
            $('#publishToweibo').click(function(){
                if($(this).prop('checked') && !WB2.checkLogin()){
                    WB2.login()
                }
            })

            // 发布的时候,也是检测是否登陆和checkbox是否勾上
            // 如果前置条件成立,就发布到微博
            //
            $('#publish').click(function(){
                if($('#publishToweibo').prop('checked') &&  WB2.checkLogin()){
                    var obj = WB2.Cookie.load();
                    $('#weiboForm input[name=content]').val($('#content').val());
                    $('#weiboForm input[name=uid]').val(obj.uid);
                    $('#weiboForm input[name=access_token]').val(obj.access_token);
                    $('#weiboForm').submit();
                }

                //发站内消息的代码
            })

        </script>
    </body>
</html>






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值