C#.QQ.OAuth2.0.API(Ⅱ)

今天说下怎么用QQ微博转发内容。

围脖转发有两种方式:

1. 弹出显示框转发

2. 悄悄的转发


第一种方式:

image

这种比较简单:

① 在head中加入以下代码

    <script type="text/javascript">
        function postToWb() {
            var _url = encodeURIComponent(document.location + "?uid=this_is_my_testid");
            var _assname = encodeURI("××××××"); //你注册的QQ帐号,不是昵称
            var _appkey = encodeURI("×××××××××××××××××"); //你?从ó腾ú讯?获?得?的?appkey
            var _pic = encodeURI(''); //(¨例y如?:ovar _pic='图?片?url1|图?片?url2|图?片?url3....)?
            var _t = "浙?江-省?最?受ü欢?迎-的?景°区?评à选?"; //$('.container hero-unit h1').valueOf(); //标ê题a和í描è述?信?息¢
            var metainfo = document.getElementsByTagName("meta");
            for (var metai = 0; metai < metainfo.length; metai++) {
                if ((new RegExp('description', 'gi')).test(metainfo[metai].getAttribute("name"))) {
                    _t = metainfo[metai].attributes["content"].value;
                }
            }
            //_t = $("#herodiv h1").html() + _t; //请?在ú这a里?添í加ó你?自?定¨义?的?分?享í内ú容Y
            if (_t.length > 120) {
                _t = _t.substr(0, 117) + '...';
            }
            _t = encodeURI(_t);
            var _u = 'http://share.v.t.qq.com/index.php?c=share&a=index&url=' + _url + '&appkey=' + _appkey + '&pic=' + _pic + '&assname=' + _assname + '&title=' + _t;
            window.open(_u, '', 'width=700, height=680, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, location=yes, resizable=no, status=no');
        }
    </script>

②在页面中加入一行代码

<a href="javascript:void(0)" onclick="postToWb();return false;" class="tmblog">
                    <img src="http://v.t.qq.com/share/images/s/b32.png"></a>

这样就能实现图中的效果了


第二种方式:

image

这种相对第一种稍微麻烦点,

场景:比如我在网站上对某个景区投了一票,这时我们在用js自动为他转发一条;就是将图中的转发和投票两个功能合并起来。

实现的方式按下面的步骤来

①在html的末尾标签后加上以下js

<script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc.js#appId=100250988"//这a里?填?写′你?的?appid
    charset="UTF-8"></script>
<script type="text/javascript">

    function multiInvoke(tms) {//测a试?频μ繁±调÷用?的?返μ回?时±序ò
        tms = tms || 80;
        function tt() {
            QC.api("https://graph.qq.com/user/get_user_info", { a: 1, b: 2, c: '汉o字?参?数y测a试?' }, "xml", "get")
                .success(function (s) {
                    QC.Console.log(" [S] get_user_info " + s.seq);
                })
                .error(function (f) {
                    QC.Console.log(" [E] get_user_info " + f.seq);
                });
        }

        for (var i = 0; i < tms; i++) {
            tt();
        }
    }


    function weibo() {
        var mydate = new Date().toLocaleDateString();
        var mytime = new Date().toLocaleTimeString();
        var scenicname = document.getElementById("scenicname").innerHTML;
        var ctt = scenicname + " " + mydate + " " + mytime;
        if (!ctt) {
            alert('亲×!?把?数y据Y填?完ê。£。£');
            return;
        }

        var weibo_back = document.getElementById("weibo_back");
        weibo_back.value = "";
        QC.api("add_t", { content: ctt })
        .success(function (s) {
            //成é功|回?调÷
            alert('发¢送í微¢博?成é功|,?请?到?腾ú讯?微¢博?内ú查é看′!?');
            QC.Console.log(' [S] weibo seq no. : ' + s.seq);
        })
        .error(function (f) {
            //失§败ü回?调÷
            QC.Console.log(" [E] weibo seq no. " + f.seq);
        })
        .complete(function (c) {
            //完ê成é请?求ó回?调÷
            weibo_back.value = c.stringifyData();
        });
    }

    function fenxiang() {
        var paras = {
            images: document.getElementById("fenxiang_images").value,
            title: document.getElementById("fenxiang_title").value,
            url: document.getElementById("fenxiang_url").value,
            comment: document.getElementById("fenxiang_comment").value,
            summary: document.getElementById("fenxiang_summary").value
        };

        for (var i in paras) {
            if (!(paras[i] + "")) {
                alert('亲×!?把?数y据Y填?完ê。£。£');
                return;
            }
        }

        var fenxiang_back = document.getElementById("fenxiang_back");
        fenxiang_back.value = "";
        QC.api("add_share", paras)
            .success(function (s) {//请?自?行D改?写′成é功|回?调÷
                alert('分?享í成é功|,?请?到?空?间?内ú查é看′!?');
                QC.Console.log(" [S] fenxiang seq no. " + s.seq);
            })
            .error(function (f) {//请?自?行D改?写′失§败ü回?调÷
                QC.Console.log(" [E] fenxiang seq no. " + f.seq);
            })
            .complete(function (c) {//请?自?行D改?写′完ê成é请?求ó回?调÷
                fenxiang_back.value = c.stringifyData();
            });
    }

    function getInfo() {
        var getInfo_back = document.getElementById("getInfo_back");
        getInfo_back.value = "";

        QC.api("get_user_info")
            .success(function (s) {//成é功|回?调÷
                alert("获?取?用?户§信?息¢成é功|!?当±前°用?户§昵?称?为a:o" + s.data.nickname);
            })
            .error(function (f) {//失§败ü回?调÷
                alert("获?取?用?户§信?息¢失§败ü!?");
            })
            .complete(function (c) {//完ê成é请?求ó回?调÷
                alert("获?取?用?户§信?息¢完ê成é!?");
                getInfo_back.value = c.stringifyData();
            });
    }

    function getToken() {
        if (QC.Login.check()) {
            var keys = QC.Login.getTokenKeys();
            alert(["当±前°登?录?用?户§的?", "openid为a:o" + keys.openid, "accessToken为a:o" + keys.accessToken].join("\n"));
            //这a里?可é以?调÷用?自?己o的?保£存?接ó口ú
            //...
        }
    }

    //callback为ajssdk保£留?字?,?测a试?是?否?会á覆2盖?当±前°页3面?函ˉ数y
    function callback() {
        alert("我ò很ü好?,?我ò很ü好?");
    }


    function showQCK() {
        document.getElementById("qc_key_cot").innerHTML = QC.Cookie.get("__qc__k");
    }


    function pageInit() {
        document.getElementById("OO").innerHTML = document.getElementById("OO").getAttribute("_origText");

        showQCK();
    }

    //获?取?jsdoc示?例y
    function getDoc() {
        QC.api.getDoc("get_user_info", function (doc) {
            var str = QC.JSON.stringify(doc);
            alert(str);
        });
    }


    document.ondblclick = function () {
        multiInvoke(2);
    };

    pageInit();


    //    debugger;

    //初?始?化ˉsdk
    //    QC.init({appId:100229030});//appId请?替?换?为a申ê请?时±系μ统3提á供?的?appId
    //加ó入?QQ登?录?按′钮¥
    QC.Login({
        btnId: "OO"
        //        ,scope : "get_user_info,add_share,add_weibo,add_t,add_topic,add_one_blog,list_album,upload_pic,add_album,check_page_fans,list_photo,get_comment,get_user_profile,get_tenpay_address,get_user_cbinfo"
    });

    QC.Login({
        btnId: "OO11",
        scope: "get_user_info,add_share,add_weibo,add_t,add_topic,add_one_blog,list_album,upload_pic,add_album,check_page_fans,list_photo,get_comment,get_user_profile,get_tenpay_address,get_user_cbinfo"
    }, function (dt, opts) {
        QC.Login.fillUserInfo(opts['btnId'], dt);
        showQCK();
        QC.Console.log("IN:OO11");
    }, function (opts) {
        showQCK();
        QC.Console.log("OUT:OO11");
    });





</script>

②加上隐藏的项,显示测试的数据

        <!-- 转a发¢测a试?部?分? -->
        <div style="display: none">
            cookie["__qc__k"] : <span id="qc_key_cot"></span>&nbsp;
            <input value=" 注¢销ú " type="button" onclick="QC.Login.signOut();pageInit();" />
            <span id="OO" _origtext="get_user_info 加ó载?昵?称?中D..." title="nickname"></span><span id="OO11"
                _origtext="get_user_info 加ó载?昵?称?中D..." title="nickname"></span>
            <textarea rows="3" cols="20" readonly="1" class="callback" id="weibo_back"></textarea>
        </div>

③在页面上加上按钮。

<input type="button" class="btn" value=" 转a发¢ &raquo;" onclick="weibo();" />

④在上面只调用的转发weibo的方法,在①中还有其他方法可以试试。

image

⑤具体的大家可以再修改,还能得到很大的简化,这是我直接从api上拉来的一段做的demo

上面把登录框也隐藏了,用的时候记得把显示出来。

image

原文地址:https://www.cnblogs.com/TivonStone/p/2425969.html