[twitter] Twitter에서 쿼리 문자열과 URL 공유

이메일에 트위터 공유 링크를 넣으려고합니다. 이것은 이메일에 있기 때문에 JavaScript에 의존 할 수 없으며 “Build Your Own”트윗 버튼을 사용해야합니다.

예를 들어, 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이 표시되지 않습니다.



답변

이것은 당신을 위해 일할 것입니다

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기능을 사용하면 전체 URL을 간단히 URL 인코딩하고 매력처럼 작동합니다.

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


답변

트윗 웹 의도를 사용하십시오. 이것은 간단한 링크입니다.

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

https://dev.twitter.com/web/tweet-button/web-intent 에서 더 많은 변수


답변

이보다 더 간단하지 않습니다.

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


답변

다음 기능을 사용할 수 있습니다.

 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>


답변

URL의 쿼리 문자열에서 &를 % 26으로 변경해야합니다.

이것 좀 봐 : https://dev.twitter.com/discussions/8616


답변

나는 모든 방법을 참조합니다.

쿼리를 두 번 인코딩하는 것이 빠른 솔루션입니다.

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


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