在Twitter上与查询string共享一个url
我正在尝试在电子邮件中添加Twitter分享链接。 因为这是在电子邮件中,我不能依靠JavaScript,而必须使用“build立自己的”Tweetbutton。
例如,分享到Google的链接:
<a href="http://www.twitter.com/share?url=http://www.google.com/>Tweet</a>
这工作正常。 我遇到的问题是当URL有一个查询string。
<a href="http://www.twitter.com/share?url=http://mysite.org/foo.htm?bar=123&baz=456">Tweet</a>
查询string的URL会混淆Twitter的URL缩短服务t.co. 我已经尝试过以各种方式对此进行编码,并且无法获取任何内容。 我得到的最接近的是这样做。
<a href="http://www.twitter.com/share?url=http://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456">Tweet</a>
在这里我只编码查询string。 当我这样做的时候,t.co成功地缩短了URL,但是按照缩短的链接,它会把你带到编码的URL。 我在地址栏中看到http://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456
,并在浏览器中获得以下错误
未find
在此服务器上未find请求的url/foo.htm?bar=123&baz=456。
我不知道如何解决这个问题。
编辑:回复:onteria_
我试过编码整个url。 当我这样做,没有url显示在Tweet中。
这将为你工作
http://twitter.com/share?text=text goes here&url=http://url goes here&hashtags=hashtag1,hashtag2,hashtag3
这是一个关于它的现场示例
http://twitter.com/share?text=Im在Twitter上分享&URL = https://stackoverflow.com/users/2943186/youssef-subehi&hashtags=stackoverflow,example,youssefusf
这可以通过使用https://twitter.com/intent/tweet
而不是http://www.twitter.com/share
来解决。 使用intent/tweet
function,您只需对整个url进行url编码,就像魅力一样。
使用推特networking意图,这是简单的链接:
https://twitter.com/intent/tweet?url=<?=urlencode($url)?>
更多的variables在https://dev.twitter.com/web/tweet-button/web-intent
你不一定需要使用意图,它编码你的url,它也将与twitter共享。
如@onteria_提到的,你需要编码整个参数。 对于面临相同问题的其他人,您可以使用以下小书签生成正确编码的url。 复制粘贴到您的浏览器的地址栏来创buildTwitter分享url 。 确保当您将javascript:
前缀复制到地址栏中时,Google Chrome会在复制时将其删除。
javascript:(function(){var url=prompt("Enter the url to share");if(url)prompt("Share the following url - ","http://www.twitter.com/share?url="+encodeURIComponent(url))})();
JS小提琴的来源http://jsfiddle.net/2frkV/
Twitter现在允许您通过数据属性发送URL。 这对我很好:
<a href="javascript:;" class="twitter-share-button" data-lang="en" data-text="check out link b" data-url="http://www.lyricvideos.org/tracks?videoURL=SX05JZ4FisE">Tweet</a>
您必须将您的url中的查询string更改为%26
看看这个: https : //dev.twitter.com/discussions/8616
使用Twitter Intent资源https://dev.twitter.com/web/tweet-button/web-intent