【问题标题】:How can I confirm a Twitter web intent was sent?如何确认已发送 Twitter 网络意图?
【发布时间】:2014-04-24 20:18:58
【问题描述】:

我想确认一位用户在点击Twitter Web Intent 后发了推文。我怎样才能做到这一点?

例子:

<a href="https://twitter.com/intent/tweet?text=Simple+Web+Intent">Tweet</a>

假设匿名*用户点击此链接并发布推文,我该如何确认?

理想情况下,我很想获得推文的链接。


* anonymous 在我的网站上没有经过身份验证,也不知道他们的 Twitter 用户名

【问题讨论】:

标签: twitter webintents


【解决方案1】:

更新

在 Twitter 更新小部件的行为后,此解决方案不再有效。您只能跟踪现在是否点击了推文按钮,而不能跟踪推文是否实际发布。


您可以使用来自 Twitter API 的“twttr.events.bind”事件侦听器来跟踪推文。可以在此处找到跟踪推文的工作示例:http://jsfiddle.net/EZ4wu/3/

HTML

<a href="https://twitter.com/intent/tweet?url=https://www.webniraj.com/2012/09/11/twitter-api-tweet-button-callbacks/&text=Twitter+API:+Tweet+Button+Callbacks"><i class="icon-twitter-sign icon-white"></i> Tweet</a>

JavaScript

function reward_user( event ) {
    if ( event ) {
        alert( 'Tweeted' );
        console.log( event );
    }
}

window.twttr = (function (d,s,id) {
    var t, js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;
    js.src="//platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs);
    return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });
    }(document, "script", "twitter-wjs"));

twttr.ready(function (twttr) {
    twttr.events.bind('tweet', reward_user);
});

我的previous solution 现在已过时,似乎不再有效。

【讨论】:

  • 惊人的响应时间。非常感谢。那确实奏效了。是否有返回有关用户或已发送推文的可识别信息?如,是否可以链接到原始页面上的推文?还是console.log(tweet_url)
  • Twitter 不会返回推文 ID 或用户信息,但您可以看到使用 console.log( event.target.href ); 发布的推文内容
  • 正确,除非用户更改默认意图文本。
  • 您将无法看到用户在推文中输入的内容,但event.target.href 将保持与从您的 HTML 代码中获取的内容相同。
  • 不幸的是,在 2015 年 11 月 20 日更新了 twitter 小部件后,此解决方案也将不起作用。 twittercommunity.com/t/forthcoming-change-to-web-intent-events/…
【解决方案2】:

试试这个:

                        twttr.events.bind('loaded', function(event) {

                            window.location = "http://theredirect_link.com"

                        });

【讨论】:

    【解决方案3】:

    @Niroj 的回答不再有效。他们更新了 api,因此事件监听器在用户单击按钮后立即触发 - 你无法检查他是否真的发了推文。

    如果您自己创建窗口(不使用 Twitter 小部件),您至少可以检测窗口是否已关闭(用户关闭它或发送推文)。

    不要链接小部件 api!

    HTML:

    <a id="twitter-intent" href="https://twitter.com/intent/tweet?url=https://www.webniraj.com/2012/09/11/twitter-api-tweet-button-callbacks/&text=Twitter+API:+Tweet+Button+Callbacks"><i class="icon-twitter-sign icon-white"></i> Tweet</a>
    

    JS:

    document.getElementById('twitter-intent').addEventListener('click', function(e) {
    
        e.preventDefault();
        e.stopPropagation(); //this should do in case you don't want to unlink twitter widgets api
    
        var width  = 575,
            height = 400,
            left   = (screen.width  - width)  / 2,
            top    = (screen.height - height) / 2,
            url    = this.href,
            opts   = 'status=1' +
                     ',width='  + width  +
                     ',height=' + height +
                     ',top='    + top    +
                     ',left='   + left;
    
        var win = window.open(url, 'twitter_share', opts);
    
        var timer = setInterval(checkWin, 500);
    
        function checkWin() {
    
            if (win.closed) {
                //just assume the user tweeted (he could just close the window without tweeting)
                alert("Thank you for tweeting!");   
                clearInterval(timer);
    
            }
    
        }
    
    });
    

    【讨论】:

      猜你喜欢
      • 2013-08-21
      • 1970-01-01
      • 2016-11-22
      • 2015-06-08
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 2016-04-29
      • 2020-03-14
      相关资源
      最近更新 更多