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.

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

haydenmuhl
quelle
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
Siehe auch diesen Link - blog.socialsourcecommons.org/2011/03/…
Alpesh Trivedi
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>
Ronen Rabinovici
quelle
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>
PHP Wurm ...
quelle
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}`
Dana Chen
quelle
2

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

Dragos Rusu
quelle
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/

Joyce Babu
quelle
1

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

&

Mit

&amp;

Standard-HTML-Code für &

Hans Ganteng
quelle
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>
user3798322
quelle
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