web-dev-qa-db-ja.com

TwitterでURL​​をクエリ文字列と共有する

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が表示されません。

91
haydenmuhl

これは、https://Twitter.com/intent/Tweetの代わりにhttp://www.Twitter.com/shareを使用することで解決できます。 intent/Tweet関数を使用すると、URL全体をURLエンコードするだけで、チャームのように機能します。

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

93
haydenmuhl

これはあなたのために働くでしょう

http://Twitter.com/share?text=text goes here&url=http://url goes here&hashtags=hashtag1,hashtag2,hashtag3

これについてのライブ例はこちら


http://Twitter.com/share?text=Twitterでの共有&url = https://stackoverflow.com/users/2943186/youssef-subehi&hashtags=stackoverflow,example,youssefusf

135
Youssef Subehi

Tweet Webインテントを使用します。これは簡単なリンクです。

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

https://dev.Twitter.com/web/Tweet-button/web-intent のその他の変数

24
kampageddon

必ずしもインテントを使用する必要はありません。URLをエンコードすると、Twitter共有でも機能します。

2
Dragos Rusu

URLのクエリ文字列で&を%26に変更する必要があります

これを見てください: https://dev.Twitter.com/discussions/8616

2
Thiago Valentim

@onteria_が述べたように、パラメーター全体をエンコードする必要があります。同じ問題に直面している他の人は、次のブックマークレットを使用して、適切にエンコードされたURLを生成できます。ブラウザのアドレスバーにコピーして貼り付け、Twitter共有URLを作成します。アドレスバーにコピーするときにjavascript:プレフィックスが存在することを確認してください。GoogleChromeはコピー時に削除します。

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
Joyce Babu

これよりも簡単になりません:

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

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>
0
user3798322

Twitter Intentリソースを使用します https://dev.Twitter.com/web/Tweet-button/web-intent

0
Wil Gichu

次の機能を使用できます。

 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>
0
PHP Worm...