Berbagi URL dengan string kueri di Twitter

118

Saya mencoba memasukkan tautan berbagi Twitter di email. Karena ini ada dalam email, saya tidak dapat mengandalkan JavaScript, dan harus menggunakan tombol Tweet "Buat Milik Anda".

Misalnya, membagikan link ke Google:

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

Ini bekerja dengan baik. Masalah yang saya alami adalah ketika URL memiliki string kueri.

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

URL dengan string kueri membingungkan layanan pemendekan URL Twitter, t.co. Saya sudah mencoba pengkodean URL ini dengan berbagai cara dan tidak dapat membuat apa pun berfungsi. Yang paling dekat yang saya dapatkan adalah dengan melakukan ini.

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

Di sini saya hanya mengkodekan string kueri. Ketika saya melakukan ini, t.co berhasil mempersingkat URL, tetapi setelah mengikuti tautan yang dipersingkat, itu membawa Anda ke URL yang disandikan. Saya melihat http://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456di bilah alamat, dan mendapatkan kesalahan berikut di browser

Tidak ditemukan

URL yang diminta /foo.htm?bar=123&baz=456 tidak ditemukan di server ini.

Saya bingung bagaimana mengatasi masalah ini.

Edit: Re: onteria_

Saya sudah mencoba menyandikan seluruh URL. Saat saya melakukannya, tidak ada URL yang muncul di Tweet.

haydenmuhl
sumber
1
Anda perlu mengodekan URL SELURUH URL. Itu termasuk semuanya dari http://bawah
onteria_

Jawaban:

110

Hal ini dapat diselesaikan dengan menggunakan https://twitter.com/intent/tweetbukan http://www.twitter.com/share. Dengan menggunakan intent/tweetfungsi tersebut, Anda cukup menyandikan URL seluruh URL Anda dan berfungsi seperti pesona.

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

haydenmuhl
sumber
Plume dan Tweetcaster tidak menangani format ini (mereka hanya menampilkan profil untuk maksud atau membagikan, tergantung pada URL). Tweetdeck tampaknya tidak menangani URL twitter.com sama sekali.
Pierre-Luc Paour
Juga lihat tautan ini - blog.socialsourcecommons.org/2011/03/…
Trivedi
2
https://twitter.com/intent/tweet?text={text_to_share}bekerja dengan sempurna di semua platform. Telah mencari tinggi dan rendah untuk ini .. Terima kasih!
Jack Dewhurst
6

Tidak lebih sederhana dari ini:

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

Anda dapat menggunakan fungsi-fungsi ini:

 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>
PHP Worm ...
sumber
Solusi yang tidak bergantung pada javascript hanya akan membuat tautan ini (masuk var url = ...) saat membuat email.
Thomas Ebert
3

Saya mereferensikan semua metode.

Menyandikan kueri dua kali adalah solusi cepat.

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


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

Anda tidak perlu menggunakan maksud, itu Anda menyandikan URL Anda itu akan berfungsi dengan berbagi twitter juga.

Dragos Rusu
sumber
1

Seperti yang disebutkan @onteria_, Anda perlu mengenkode seluruh parameter. Untuk orang lain yang menghadapi masalah yang sama, Anda dapat menggunakan bookmarklet berikut untuk menghasilkan url yang dikodekan dengan benar. Salin dan tempel ke bilah alamat browser Anda untuk membuat url berbagi twitter . Pastikan javascript:awalan ada di sana saat Anda menyalinnya ke bilah alamat, Google Chrome menghapusnya saat menyalin.

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))})();

Sumber di JS Fiddle http://jsfiddle.net/2frkV/

Joyce Babu
sumber
1

Jika Anda menambahkannya secara manual di situs html, ganti saja:

&

Dengan

&amp;

Kode html standar untuk &

Hans Ganteng
sumber
0

Twitter sekarang memungkinkan Anda mengirim URL melalui atribut data. Ini bagus untuk saya:

<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>
pengguna3798322
sumber
Adakah yang menguji apakah ini bergantung pada javascript dari API twitter untuk menarik url dari atribut dan kemudian mengarahkan browser ke URL yang benar?
Tandai