web-dev-qa-db-fra.com

Partage d'une URL avec une chaîne de requête sur Twitter

J'essaie de mettre un lien de partage Twitter dans un email. Comme cela se trouve dans un courrier électronique, je ne peux pas compter sur JavaScript et je dois utiliser le bouton Tweet "Construis ton propre".

Par exemple, partager un lien vers Google:

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

Cela fonctionne bien. Le problème que je rencontre est lorsque l'URL contient une chaîne de requête.

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

Les URL avec des chaînes de requête confondent le service de réduction d'URL de Twitter, t.co. J'ai essayé le codage d'URL de différentes manières et je ne peux rien faire fonctionner. Le plus proche que j'ai eu est en faisant cela.

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

Ici, je n'ai encodé que la chaîne de requête. Lorsque je le fais, t.co réussit à raccourcir l’URL, mais après avoir suivi le lien raccourci, il vous conduit à l’URL codée. Je vois http://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456 dans la barre d'adresse et j'obtiens l'erreur suivante dans le navigateur

Pas trouvé

L'URL demandée /foo.htm?bar=123&baz=456 est introuvable sur ce serveur.

Je ne sais pas comment résoudre ce problème.

Modifier: Re: onteria_

J'ai essayé d'encoder l'intégralité de l'URL. Quand je fais cela, aucune URL n'apparaît dans le Tweet.

88
haydenmuhl

Cela peut être résolu en utilisant https://Twitter.com/intent/Tweet au lieu de http://www.Twitter.com/share. En utilisant la fonction intent/Tweet, vous codez simplement l’URL en entier et cela fonctionne comme un charme.

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

90
haydenmuhl

Cela fonctionnera pour vous

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

Voici un exemple en direct à ce sujet


http://Twitter.com/share?text=Im Partager sur Twitter & url = https: //stackoverflow.com/users/2943186/youssef-subehi&hashtags=stackoverflow,example,youssefusf

129
Youssef Subehi

Utilisez l'intention de Tweet Web, voici le lien simple:

https://Twitter.com/intent/tweet?url=<?=urlencode($url)?>

plus de variables sur https://dev.Twitter.com/web/Tweet-button/web-intent

21
kampageddon

Vous n'avez pas nécessairement besoin d'utiliser l'intention, si vous codez votre URL, cela fonctionnera également avec le partage Twitter.

2
Dragos Rusu

Vous devez modifier & en% 26 dans la chaîne de requête à partir de votre URL

Regardez ceci: https://dev.Twitter.com/discussions/8616

2
Thiago Valentim

Comme @onteria_ l'a mentionné, vous devez coder l'intégralité du paramètre. Pour toute autre personne confrontée au même problème, vous pouvez utiliser le bookmarklet suivant pour générer l'URL correctement codée. Copier le coller dans la barre d'adresse de votre navigateur pour créer l'URL de partage Twitter. Assurez-vous que le préfixe javascript: est présent lorsque vous le copiez dans la barre d'adresse. Google Chrome le supprime lors de la copie.

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

Source sur JS Fiddle http://jsfiddle.net/2frkV/

1
Joyce Babu

Ne devient pas plus simple que ça:

<a href="https://Twitter.com/intent/tweet?text=optional%20promo%20text%20http://example.com/foo.htm?bar=123&baz=456" target="_blank">Tweet</a>
1
Ronen Rabinovici

Twitter vous permet maintenant d'envoyer l'URL via un attribut de données. Cela fonctionne très bien pour moi: 

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

Utiliser la ressource d'intention Twitter https://dev.Twitter.com/web/Tweet-button/web-intent

0
Wil Gichu

Vous pouvez utiliser ces fonctions:

 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>
0
PHP Worm...