我想确认一个用户在点击Twitter Web Intent后发了推文。我怎样才能做到这一点?
例子:
<a href="https://twitter.com/intent/tweet?text=Simple+Web+Intent">Tweet</a>
假设匿名*用户点击此链接并发布推文,我该如何确认?
理想情况下,我很想获得推文的链接。
*anonymous
如未在我的网站上进行身份验证且不知道他们的 Twitter 用户名
我想确认一个用户在点击Twitter Web Intent后发了推文。我怎样才能做到这一点?
例子:
<a href="https://twitter.com/intent/tweet?text=Simple+Web+Intent">Tweet</a>
假设匿名*用户点击此链接并发布推文,我该如何确认?
理想情况下,我很想获得推文的链接。
*anonymous
如未在我的网站上进行身份验证且不知道他们的 Twitter 用户名
更新
在 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);
});
我以前的解决方案现在已经过时,似乎不再有效。
尝试这个:
twttr.events.bind('loaded', function(event) {
window.location = "http://theredirect_link.com"
});
@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);
}
}
});