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

在Twitter上与查询字符串共享URL,twitter,query-string,share,url-encoding,Twitter,Query String,Share,Url Encoding,我正试图在电子邮件中添加一个Twitter共享链接。因为这是一封电子邮件,我不能依赖JavaScript,必须使用“构建自己的”推文按钮 例如,共享到Google的链接: <a href="http://www.twitter.com/share?url=http://www.google.com/>Tweet</a> 这个很好用。我遇到的问题是当URL有一个查询字符串时 <a href="http://www.twitter.com/sh

我正试图在电子邮件中添加一个Twitter共享链接。因为这是一封电子邮件,我不能依赖JavaScript,必须使用“构建自己的”推文按钮

例如,共享到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

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

编辑:Re:onteria_


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

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


你不一定需要使用intent,只要你对你的URL进行编码,它也可以用于twitter共享。

这对你很有用

http://twitter.com/share?text=text goes here&url=http://url goes here&hashtags=hashtag1,hashtag2,hashtag3
这里有一个关于它的活生生的例子



正如@onteria_uuu所提到的,您需要对整个参数进行编码。对于其他面临相同问题的人,您可以使用以下bookmarklet生成正确编码的url。将其复制粘贴到浏览器的地址栏中,以创建twitter共享url。当您将其复制到地址栏时,请确保
javascript:
前缀存在,谷歌浏览器在复制时会将其删除

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))})();
jsfiddle上的源代码
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中的查询字符串更改为%26(&O)


看看这个:

使用Twitter意图资源

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

https://twitter.com/intent/tweet?url=<?=urlencode($url)?>

https://twitter.com/intent/tweet?url=

更多变量在

您可以使用以下功能:

 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>
函数shareOnFB(){
变量url=”https://www.facebook.com/sharer/sharer.php?u=https://yoururl.com&t=your 信息”;
打开(url,,“菜单栏=否,工具栏=否,可调整大小=是,滚动条=是,高度=300,宽度=600”);
返回false;
}
函数shareOntwitter(){
var url='1〕https://twitter.com/intent/tweet?url=URL_HERE&via=getboldify&text=yourtext';
TwitterWindow=window.open(url,'TwitterWindow',宽度=600,高度=300);
返回false;
}
函数sharengoogle(){
变量url=”https://plus.google.com/share?url=https://yoururl.com";
打开(url,,“菜单栏=否,工具栏=否,可调整大小=是,滚动条=是,高度=350,宽度=480”);
返回false;
}
脸谱网
啁啾
谷歌

再简单不过了:

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

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

&


&

的标准html代码引用了所有方法

将查询编码两次是快速解决方案

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


const twitterSharingURL=`https://twitter.com/intent/tweet?&url=${url}`
这对我有用:


  • 在facebook上共享
  • 在推特上分享
  • 在linkedin上分享
在js文件中添加以下内容:


固定资产();
函数socialWindow(url){
左变量=(屏幕宽度-570)/2;
var top=(屏幕高度-570)/2;
var params=“menubar=no,toolbar=no,status=no,width=570,height=570,top=“+top+”,left=“+left;window.open(url,“NewWindow”,params);}
函数setShareinks(){
var pageUrl=encodeURIComponent(document.URL);
var tweet=encodeURIComponent($(“meta[property='og:description'])).attr(“content”);
$(.social share.facebook”)。在(“单击”,函数(){url=”https://www.facebook.com/sharer.php?u=“+pageUrl;
社交窗口(url);
});
$(.social share.twitter”)。在(“单击”,函数(){
url=”https://twitter.com/intent/tweet?url=“+pageUrl+”&text=“+tweet;
社交窗口(url);
});
$(.social share.linkedin”)。在(“单击”,函数(){
url=”https://www.linkedin.com/shareArticle?mini=true&url=“+pageUrl;
社交窗口(url);
})
}

希望这能很好地工作。

您需要对整个url进行url编码。这包括了从http://downPlume到Tweetcaster的所有内容,但Tweetcaster不处理这种格式(它们只是根据URL显示意图或共享的配置文件)。Tweetdeck似乎根本无法处理twitter.com URL。另请参见此链接-
https://twitter.com/intent/tweet?text={text_to_share}
在所有平台上都能完美运行。我一直在到处找这个。。谢谢有没有人测试过这是否依赖于twitter API中的javascript从属性中提取url,然后将浏览器重定向到正确的url?包括一个关键片段来回答这个问题将有助于不依赖javascript的解决方案只构建这些链接(在
var url=…
)当生成电子邮件时。如果它…你知道…回答了原始问题,那将是一个很好的答案。使用js Nice构建共享链接的完整文档我喜欢这个
const query = a=123&b=456;
const url = `https://example.com/test?${encodeURIComponent(encodeURIComponent(query),)}`;


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