การแชร์ URL กับสตริงข้อความค้นหาบน Twitter


118

ฉันกำลังพยายามใส่ลิงค์แชร์ของ 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 ที่มีสตริงข้อความค้นหาทำให้บริการย่อ URL ของ Twitter สับสน 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 ปรากฏในทวีต


1
คุณต้อง url เข้ารหัส URL ทั้งหมด ซึ่งรวมทุกอย่างตั้งแต่http://ลง
onteria_

คำตอบ:


171

สิ่งนี้จะทำงานให้คุณ

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


คงจะเป็นคำตอบที่ดีหาก…คุณรู้…ตอบคำถามเดิม
Dave Land

110

ซึ่งสามารถแก้ไขได้โดยใช้https://twitter.com/intent/tweetแทนhttp://www.twitter.com/share. การใช้intent/tweetฟังก์ชันนี้คุณเพียงแค่เข้ารหัส URL ทั้งหมดของคุณและมันก็ใช้งานได้ดี

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


Plume และ Tweetcaster ไม่รองรับรูปแบบนี้ (เพียงแค่แสดงโปรไฟล์เพื่อเจตนาหรือแชร์ขึ้นอยู่กับ URL) Tweetdeck ดูเหมือนจะไม่รองรับ URL ของ twitter.com เลย
Pierre-Luc Paour

ดูลิงค์นี้ด้วย - blog.socialsourcecommons.org/2011/03/…
Alpesh Trivedi

2
https://twitter.com/intent/tweet?text={text_to_share}ทำงานได้อย่างสมบูรณ์แบบบนทุกแพลตฟอร์ม ถูกค้นหาสูงและต่ำสำหรับสิ่งนี้ .. ขอบคุณ!
Jack Dewhurst


6

ไม่ง่ายไปกว่านี้:

<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

คุณสามารถใช้ฟังก์ชันเหล่านี้:

 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>

โซลูชันที่ไม่ต้องพึ่งพาจาวาสคริปต์เพียงแค่สร้างลิงก์เหล่านี้ (ในvar url = ...) เมื่อสร้างอีเมล
Thomas Ebert


3

ฉันอ้างอิงวิธีการทั้งหมด

เข้ารหัสแบบสอบถามสองครั้งเป็นวิธีแก้ปัญหาที่รวดเร็ว

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

คุณไม่จำเป็นต้องใช้ความตั้งใจ แต่คุณเข้ารหัส URL ของคุณมันจะทำงานร่วมกับ twitter share เช่นกัน


1

ดังที่ @onteria_ กล่าวถึงคุณต้องเข้ารหัสพารามิเตอร์ทั้งหมด สำหรับใครก็ตามที่ประสบปัญหาเดียวกันคุณสามารถใช้ bookmarklet ต่อไปนี้เพื่อสร้าง url ที่เข้ารหัสอย่างถูกต้อง คัดลอกวางลงในแถบที่อยู่ของเบราว์เซอร์ของคุณเพื่อสร้างURL ที่ทวิตเตอร์ ตรวจสอบให้แน่ใจว่ามีjavascript:คำนำหน้าอยู่เมื่อคุณคัดลอกลงในแถบที่อยู่ Google Chrome จะลบออกเมื่อทำการคัดลอก

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/



0

ตอนนี้ 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>

มีใครทดสอบดูว่าสิ่งนี้อาศัย javascript จาก twitter API เพื่อดึง url จากแอตทริบิวต์แล้วเปลี่ยนเส้นทางเบราว์เซอร์ไปยัง URL ที่ถูกต้องหรือไม่?
ทำเครื่องหมาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.