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

hay*_*uhl 99 twitter share url-encoding query-string

我正在尝试在电子邮件中添加Twitter共享链接.因为这是在电子邮件中我不能依赖JavaScript,并且必须使用"Build Your Own"Tweet按钮.

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

<a href="http://www.twitter.com/share?url=http://www.google.com/>Tweet</a>
Run Code Online (Sandbox Code Playgroud)

这很好用.我遇到的问题是URL有查询字符串.

<a href="http://www.twitter.com/share?url=http://mysite.org/foo.htm?bar=123&baz=456">Tweet</a>
Run Code Online (Sandbox Code Playgroud)

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

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

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

未找到

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

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

编辑: Re:onteria_

我试过编码整个网址.当我这样做时,Tweet中没有显示任何URL.

You*_*ehi 150

这对你有用

http://twitter.com/share?text=text goes here&url=http://url goes here&hashtags=hashtag1,hashtag2,hashtag3
Run Code Online (Sandbox Code Playgroud)

这是关于它的实例


http://twitter.com/share?text=Im在Twitter上分享&url = /sf/users/206023051/&hashtags=stackoverflow,example,youssefusf

  • 如果它……你知道……回答了原来的问题,那将是一个很好的答案。 (2认同)

hay*_*uhl 98

这可以通过使用https://twitter.com/intent/tweet而不是http://www.twitter.com/share.使用该intent/tweet功能,您只需对整个URL进行URL编码,就像魅力一样.

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

  • `https://twitter.com/intent/tweet?text={text_to_share}` 在所有平台上都能完美运行。一直在为此寻找高低..谢谢! (4认同)

kam*_*don 24

使用tweet web intent,这是一个简单的链接:

https://twitter.com/intent/tweet?url=<?=urlencode($url)?>
Run Code Online (Sandbox Code Playgroud)

更多变量请访问https://dev.twitter.com/web/tweet-button/web-intent


PHP*_*... 10

您可以使用以下功能:

 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>
Run Code Online (Sandbox Code Playgroud)


Ron*_*ici 7

没有比这更简单的了:

<a href="https://twitter.com/intent/tweet?text=optional%20promo%20text%20http://example.com/foo.htm?bar=123&baz=456" target="_blank">Tweet</a>
Run Code Online (Sandbox Code Playgroud)


小智 6

它对我有用:

<div class="links">
    <ul>
    <li class="social-share facebook">Share on Facebook</li>
    <li class="social-share twitter">Share on Twitter</li>
    <li class="social-share linkedin">Share on LinkedIn</li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

并在js文件中添加:


setShareLinks();

    function socialWindow(url) {
    var left = (screen.width -570) / 2;
    var top = (screen.height -570) / 2;
    var params = "menubar=no,toolbar=no,status=no,width=570,height=570,top=" + top + ",left=" + left;  window.open(url,"NewWindow",params);}

function setShareLinks() {
    var pageUrl = encodeURIComponent(document.URL);
    var tweet = encodeURIComponent($("meta[property='og:description']").attr("content"));

$(".social-share.facebook").on("click", function() { url="https://www.facebook.com/sharer.php?u=" + pageUrl;
socialWindow(url);
});

$(".social-share.twitter").on("click", function() {
url = "https://twitter.com/intent/tweet?url=" + pageUrl + "&text=" + tweet;
socialWindow(url);
});

$(".social-share.linkedin").on("click", function() {
    url = "https://www.linkedin.com/shareArticle?mini=true&url=" + pageUrl;
socialWindow(url);
})
}
Run Code Online (Sandbox Code Playgroud)

希望这会运作良好。


Thi*_*tim 5

您必须在您的 url 中的查询字符串中将 & 更改为 %26

看看这个:https : //dev.twitter.com/discussions/8616


小智 5

我参考了所有方法。

对查询进行两次编码是快速解决方案。

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


const twitterSharingURL=`https://twitter.com/intent/tweet?&url=${url}`
Run Code Online (Sandbox Code Playgroud)