with plugin example card twitter query-string share url-encoding

plugin - Compartir una URL con una cadena de consulta en Twitter



twitter share button (8)

Estoy tratando de poner un enlace para compartir en Twitter en un correo electrónico. Como se trata de un correo electrónico, no puedo confiar en JavaScript y tengo que usar el botón "Crear tu propio".

Por ejemplo, compartir un enlace a Google:

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

Esto funciona bien El problema que tengo es cuando la URL tiene una cadena de consulta.

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

Las URL con cadenas de consulta confunden el servicio de acortamiento de URL de Twitter, t.co. He intentado con la codificación URL esto de varias maneras y no puedo hacer que nada funcione. Lo más cercano que he conseguido es haciendo esto.

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

Aquí he codificado solo la cadena de consulta. Cuando hago esto, t.co acorta con éxito la URL, pero al seguir el enlace acortado, lo lleva a la URL codificada. Veo http://mysite.org/foo.htm%3Fbar%3D123%26baz%3D456 en la barra de direcciones y obtengo el siguiente error en el navegador

Extraviado

La URL solicitada /foo.htm?bar=123&baz=456 no se encontró en este servidor.

No sé cómo resolver este problema.

Editar: Re: onteria_

Intenté codificar toda la URL. Cuando lo hago, no aparece ninguna URL en el Tweet.


Como se menciona @onteria_, necesitas codificar todo el parámetro. Para cualquier otra persona que enfrente el mismo problema, puede usar el siguiente bookmarklet para generar la url adecuadamente codificada. Copie y péguelo en la barra de direcciones de su navegador para crear la url de compartir de twitter . Asegúrese de que el prefijo javascript: esté allí cuando lo copie en la barra de direcciones, Google Chrome lo elimina al copiar.

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

Fuente en JS Fiddle http://jsfiddle.net/2frkV/




Esto se puede resolver usando https://twitter.com/intent/tweet lugar de http://www.twitter.com/share . Usando la función intent/tweet , simplemente URL codifica toda su URL y funciona como un amuleto.

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


No es necesario que utilices la intención, si codificas tu URL, funcionará también con Twitter.


Twitter ahora te permite enviar la URL a través de un atributo de datos. Esto funciona genial para mí:

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