在Twitter上与查询字符串共享URL


117

我正在尝试在电子邮件中放置Twitter分享链接。因为这是一封电子邮件,所以我不能依靠JavaScript,而必须使用“构建自己的” Tweet按钮。

例如,共享指向Google的链接:

<a href="http://www.twitter.com/share?url=http://www.google.com/>Tweet</a>

这很好。我遇到的问题是URL具有查询字符串时。

<a href="http://www.twitter.com/share?url=http://mysite.org/foo.htm?bar=123&baz=456">Tweet</a>

带有查询字符串的URL会混淆Twitter的URL缩短服务t.co。我已经尝试过以各种方式对URL进行编码,并且无法正常工作。我最近得到的就是这样做。

<a href="http://www.twitter.com/share?url=http://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456">Tweet</a>

在这里,我仅对查询字符串进行了编码。当我这样做时,t.co成功地缩短了URL,但是按照缩短的链接,它将带您到编码的URL。我http://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456在地址栏中看到了,并在浏览器中收到以下错误

未找到

在此服务器上找不到请求的URL /foo.htm?bar=123&baz=456。

我不知道如何解决这个问题。

编辑: 回复:onteria_

我尝试对整个URL进行编码。当我这样做时,Tweet中不会显示URL。


1
您需要对整个URL进行url编码。这包括一切从http://
onteria_

Answers:



109

可以使用https://twitter.com/intent/tweet代替来解决http://www.twitter.com/share。使用该intent/tweet功能,您只需对整个URL进行URL编码,就可以像超级按钮一样工作。

https://dev.twitter.com/web/intents


Plume和Tweetcaster不处理这种格式(它们仅显示意图或共享的配置文件,具体取决于URL)。Tweetdeck似乎根本不处理twitter.com URL。
皮埃尔·卢克(Paul-Luc Paour)2012年


2
https://twitter.com/intent/tweet?text={text_to_share}在所有平台上均可完美运行。一直在为此寻找高低..谢谢!
杰克·德赫斯特



4

您可以使用以下功能:

 function shareOnFB(){
       var url = "https://www.facebook.com/sharer/sharer.php?u=https://yoururl.com&t=your message";
       window.open(url, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600');
       return false;
  }


function shareOntwitter(){
    var url = 'https://twitter.com/intent/tweet?url=URL_HERE&via=getboldify&text=yourtext';
    TwitterWindow = window.open(url, 'TwitterWindow',width=600,height=300);
    return false;
 }


function shareOnGoogle(){
     var url = "https://plus.google.com/share?url=https://yoururl.com";
     window.open(url, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=350,width=480');
     return false;
}


<a onClick="shareOnFB()"> Facebook </a>
<a onClick="shareOntwitter()"> Twitter </a>
<a onClick="shareOnGoogle()"> Google </a>

不依赖JavaScript的解决方案将var url = ...在生成电子邮件时(在中)构建这些链接。
托马斯·埃伯特


3

我引用了所有方法。

快速将查询编码两次。

const query = a=123&b=456;
const url = `https://example.com/test?${encodeURIComponent(encodeURIComponent(query),)}`;


const twitterSharingURL=`https://twitter.com/intent/tweet?&url=${url}`


1

如@onteria_所述,您需要对整个参数进行编码。对于其他遇到相同问题的人,您可以使用以下书签生成正确编码的URL。复制并将其粘贴到浏览器的地址栏中,以创建twitter共享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 Fiddle上的资源 http://jsfiddle.net/2frkV/


1

如果您在html网站上添加了手册,只需替换:

&

&amp;

&的标准html代码


0

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>

是否有人测试过这是否依赖于twitter API中的javascript来从属性中提取url,然后将浏览器重定向到正确的URL?
2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.