Freigeben einer URL mit einer Abfragezeichenfolge auf Twitter


117

Ich versuche, einen Twitter-Freigabelink in eine E-Mail einzufügen. Da dies in einer E-Mail steht, kann ich mich nicht auf JavaScript verlassen und muss den Tweet-Button "Build Your Own" verwenden.

Beispiel: Teilen eines Links zu Google:

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

Das funktioniert gut. Das Problem, das ich habe, ist, wenn die URL eine Abfragezeichenfolge hat.

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

URLs mit Abfragezeichenfolgen verwirren den URL-Verkürzungsdienst von Twitter, t.co. Ich habe versucht, die URL auf verschiedene Arten zu codieren, und kann nichts zum Laufen bringen. Das nächste, was ich bekommen habe, ist dies zu tun.

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

Hier habe ich nur die Abfragezeichenfolge codiert. Wenn ich dies tue, verkürzt t.co die URL erfolgreich, aber wenn Sie dem verkürzten Link folgen, gelangen Sie zur verschlüsselten URL. Ich sehe http://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456in der Adressleiste und erhalte den folgenden Fehler im Browser

Nicht gefunden

Die angeforderte URL /foo.htm?bar=123&baz=456 wurde auf diesem Server nicht gefunden.

Ich weiß nicht, wie ich dieses Problem lösen soll.

Edit: Re: onteria_

Ich habe versucht, die gesamte URL zu verschlüsseln. Wenn ich das mache, wird im Tweet keine URL angezeigt.


1
Sie müssen die GESAMTE URL als URL codieren. Das beinhaltet alles von http://unten
onteria_

Antworten:



109

Dies kann durch Verwendung von https://twitter.com/intent/tweetanstelle von gelöst werden http://www.twitter.com/share. Mit der intent/tweetFunktion codieren Sie einfach Ihre gesamte URL per URL und es funktioniert wie ein Zauber.

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


Plume und Tweetcaster verarbeiten dieses Format nicht (sie zeigen nur das Profil für Absichten oder Freigaben an, abhängig von der URL). Tweetdeck scheint überhaupt nicht mit URLs von twitter.com umzugehen.
Pierre-Luc Paour


2
https://twitter.com/intent/tweet?text={text_to_share}funktioniert perfekt auf allen Plattformen. Ich habe hoch und niedrig danach gesucht. Danke!
Jack Dewhurst


6

Einfacher geht es nicht:

<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

Sie können diese Funktionen verwenden:

 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>

Eine Lösung, die nicht auf Javascript basiert, würde diese Links (in var url = ...) nur beim Generieren der E-Mail erstellen .
Thomas Ebert


3

Ich verweise auf alle Methoden.

Die Abfrage zweimal zu codieren ist die schnelle Lösung.

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

Sie müssen nicht unbedingt Absicht verwenden, wenn Sie Ihre URL verschlüsseln, funktioniert dies auch mit der Twitter-Freigabe.


1

Wie @onteria_ erwähnt, müssen Sie den gesamten Parameter codieren. Für alle anderen, die mit demselben Problem konfrontiert sind, können Sie das folgende Lesezeichen verwenden, um die ordnungsgemäß codierte URL zu generieren. Kopieren Sie es und fügen Sie es in die Adressleiste Ihres Browsers ein, um die URL für die Twitter-Freigabe zu erstellen . Stellen Sie sicher, dass das javascript:Präfix vorhanden ist, wenn Sie es in die Adressleiste kopieren. Google Chrome entfernt es beim Kopieren.

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

Quelle auf JS Fiddle http://jsfiddle.net/2frkV/


1

Wenn Sie es manuell auf einer HTML-Site hinzufügen, ersetzen Sie einfach:

&

Mit

&amp;

Standard-HTML-Code für &


0

Mit Twitter können Sie die URL jetzt über ein Datenattribut senden. Das funktioniert gut für mich:

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

Hat jemand getestet, ob dies auf Javascript von der Twitter-API beruht, um die URL aus dem Attribut zu ziehen und den Browser dann zur richtigen URL umzuleiten?
Mark

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.