Chia sẻ URL với một chuỗi truy vấn trên Twitter


118

Tôi đang cố gắng đặt một liên kết chia sẻ Twitter trong một email. Vì đây là một email nên tôi không thể dựa vào JavaScript và phải sử dụng nút Tweet "Xây dựng của riêng bạn".

Ví dụ: chia sẻ một liên kết đến Google:

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

Điều này hoạt động tốt. Vấn đề tôi đang gặp phải là khi URL có chuỗi truy vấn.

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

Các URL có chuỗi truy vấn gây nhầm lẫn cho dịch vụ rút ngắn URL của Twitter, t.co. Tôi đã thử mã hóa URL này theo nhiều cách khác nhau và không thể làm cho bất cứ điều gì hoạt động. Gần nhất tôi đã nhận được bằng cách làm điều này.

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

Ở đây tôi chỉ mã hóa chuỗi truy vấn. Khi tôi làm điều này, t.co đã rút ngắn thành công URL, nhưng khi theo liên kết rút gọn, nó sẽ đưa bạn đến URL được mã hóa. Tôi thấy http://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456trên thanh địa chỉ và gặp lỗi sau trong trình duyệt

Không tìm thấy

Không tìm thấy URL được yêu cầu /foo.htm?bar=123&baz=456 trên máy chủ này.

Tôi lúng túng không biết làm thế nào để giải quyết vấn đề này.

Chỉnh sửa: Re: onteria_

Tôi đã thử mã hóa toàn bộ URL. Khi tôi làm điều đó, không có URL nào hiển thị trong Tweet.


1
Bạn cần mã hóa url TOÀN BỘ URL. Điều đó bao gồm tất cả mọi thứ từ http://dưới lên
onteria_ Ngày

Câu trả lời:


171

Điều này sẽ làm việc cho bạn

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

Đây là một ví dụ trực tiếp về nó


http://twitter.com/share?text=Im Chia sẻ trên Twitter & url = https: //stackoverflow.com/users/2943186/youssef-subehi&hashtags=stackoverflow,example,youssefusf


Sẽ là một câu trả lời tốt nếu nó… bạn biết đấy… trả lời câu hỏi ban đầu.
Dave Land

110

Điều này có thể được giải quyết bằng cách sử dụng https://twitter.com/intent/tweetthay vì http://www.twitter.com/share. Sử dụng intent/tweetchức năng này, bạn chỉ cần mã hóa URL của toàn bộ URL của mình và nó hoạt động giống như một sự quyến rũ.

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


Plume và Tweetcaster không xử lý định dạng này (chúng chỉ hiển thị hồ sơ cho mục đích hoặc chia sẻ, tùy thuộc vào URL). Tweetdeck dường như không xử lý các URL của twitter.com.
Pierre-Luc Paour


2
https://twitter.com/intent/tweet?text={text_to_share}hoạt động hoàn hảo trên tất cả các nền tảng. Đã tìm kiếm cao và thấp cho điều này .. Cảm ơn!
Jack Dewhurst


6

Không đơn giản hơn thế này:

<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

Bạn có thể sử dụng các chức năng sau:

 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>

Một giải pháp không dựa vào javascript sẽ chỉ xây dựng các liên kết này (trong var url = ...) khi tạo email.
Thomas Ebert


3

Tôi tham khảo tất cả các phương pháp.

Mã hóa truy vấn hai lần là giải pháp nhanh chóng.

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

Bạn không nhất thiết phải sử dụng ý định, nếu bạn mã hóa URL của mình, nó cũng sẽ hoạt động với tính năng chia sẻ trên twitter.


1

Như @onteria_ đã đề cập, bạn cần mã hóa toàn bộ tham số. Đối với bất kỳ ai khác gặp phải vấn đề tương tự, bạn có thể sử dụng bookmarklet sau để tạo url được mã hóa đúng cách. Sao chép, dán nó vào thanh địa chỉ của trình duyệt để tạo url chia sẻ twitter . Đảm bảo rằng javascript:tiền tố ở đó khi bạn sao chép nó vào thanh địa chỉ, Google Chrome sẽ xóa tiền tố đó khi sao chép.

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

Nguồn trên JS Fiddle http://jsfiddle.net/2frkV/


1

Nếu bạn thêm thủ công trên trang web html, chỉ cần thay thế:

&

Với

&amp;

Mã html chuẩn cho &


0

Twitter hiện cho phép bạn gửi URL thông qua một thuộc tính dữ liệu. Điều này làm việc tuyệt vời cho tôi:

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

Có ai đã thử nghiệm để xem liệu điều này có dựa vào javascript từ API twitter để kéo url từ thuộc tính và sau đó chuyển hướng trình duyệt đến đúng URL không?
Đánh dấu

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.