Совместное использование URL со строкой запроса в Twitter - PullRequest
92 голосов
/ 02 июня 2011

Я пытаюсь разместить ссылку на твиттер в электронном письме.Поскольку это электронное письмо, я не могу положиться на JavaScript и вынужден использовать кнопку «Создать свой собственный» Tweet.

Например, поделиться ссылкой на 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.

Ответы [ 9 ]

138 голосов
/ 30 декабря 2013

Это будет работать для вас

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

93 голосов
/ 02 июня 2011

Это можно решить с помощью https://twitter.com/intent/tweet вместо http://www.twitter.com/share. Используя функцию intent/tweet, вы просто кодируете URL-адрес всего URL, и он работает как шарм.

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

24 голосов
/ 25 марта 2015

Используйте твит веб-намерения, это простая ссылка:

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

больше переменных на https://dev.twitter.com/web/tweet-button/web-intent

2 голосов
/ 04 сентября 2014

Вы должны изменить & на% 26 в строке запроса от вашего URL

Посмотрите на это: https://dev.twitter.com/discussions/8616

2 голосов
/ 10 октября 2012

Вам не обязательно использовать намерение, если вы закодируете свой URL, он также будет работать с Twitter.

1 голос
/ 11 мая 2014

Как уже упоминалось @onteria_, вам необходимо закодировать весь параметр.Для тех, кто сталкивается с той же проблемой, вы можете использовать следующий букмарклет для генерации правильно закодированного URL.Скопируйте и вставьте его в адресную строку браузера, чтобы создать URL-адрес для общего доступа в Twitter .Убедитесь, что при копировании в адресную строку присутствует префикс 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 голосов
/ 15 февраля 2019

Вы можете использовать эти функции:

 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 голосов
/ 12 января 2015

Используйте ресурс Twitter Intent https://dev.twitter.com/web/tweet-button/web-intent

0 голосов
/ 09 июля 2014

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...