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.


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


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


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>

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>

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}`

2

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


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/


1

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

&

Dengan

&amp;

Kode html standar untuk &


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>

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.