Twitter oAuth callbackUrl - разработка локального хоста

Есть ли у кого-то еще трудное время, чтобы получить URL-адрес обратного вызова Twitters oAuth, чтобы попасть в среду разработки localhost. По-видимому, он недавно был отключен. http://code.google.com/p/twitter-api/issues/detail?id=534#c1

У кого-нибудь есть обходной путь. Я действительно не хочу останавливать свое развитие

Ответ 1

Альтернатива 1.

Настройте файл .hosts(Windows) или etc/hosts, чтобы указать домен в домене localhost. например:

127.0.0.1 xyz.com

где xyz.com - ваш настоящий домен.

Альтернатива 2.

Кроме того, в статье приведена подсказка для альтернативного использования службы сокращения URL-адресов. Сократите свой локальный URL-адрес и укажите результат как обратный вызов.

Альтернатива 3.

Кроме того, кажется, что он работает, чтобы обеспечить, например, http://127.0.0.1:8080 как обратный вызов для Twitter, а не http://localhost:8080.

Ответ 2

Я просто должен был сделать это на прошлой неделе. По-видимому, localhost не работает, но 127.0.0.1 имеет значение Go.

Это, конечно, предполагает, что вы регистрируете два приложения с помощью Twitter, один для вашего живого www.mysite.com и другого для 127.0.0.1.

Ответ 3

Просто поместите http://127.0.0.1:xxxx/ в качестве URL-адреса обратного вызова, где xxxx - это порт для вашей инфраструктуры

Ответ 4

Да, он был отключен из-за недавней проблемы безопасности, обнаруженной в OAuth. Единственным решением на данный момент является создание двух приложений OAuth - один для производства и один для разработки. В приложении разработки вы устанавливаете свой URL-адрес обратного вызова localhost вместо живого.

Ответ 5

Вот как я это сделал:

Зарегистрированный URL-адрес обратного вызова: http://127.0.0.1/Callback.aspx

   OAuthTokenResponse authorizationTokens = 
        OAuthUtility.GetRequestToken(ConfigSettings.getConsumerKey(), 
                                     ConfigSettings.getConsumerSecret(), 
                                     "http://127.0.0.1:1066/Twitter/Callback.aspx");

ConfigSettings:

public static class ConfigSettings
{
    public static String getConsumerKey()
    {
        return System.Configuration.ConfigurationManager.AppSettings["ConsumerKey"].ToString();
    }

    public static String getConsumerSecret()
    {
        return System.Configuration.ConfigurationManager.AppSettings["ConsumerSecret"].ToString();
    }

}

Web.config:

<appSettings>

    <add key="ConsumerKey" value="xxxxxxxxxxxxxxxxxxxx"/>
    <add key="ConsumerSecret" value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"/>

</appSettings>

Убедитесь, что свойство "использовать динамические порты" для вашего проекта "false" и вместо этого введите статический номер порта. (Я использовал 1066).

Надеюсь, это поможет!

Ответ 6

Используйте http://smackaho.st

Что это такое - простая ассоциация DNS с 127.0.0.1, которая позволяет обойти фильтры на localhost или 127.0.0.1:

smackaho.st. 28800 IN A 127.0.0.1

Итак, если вы нажмете на ссылку, она покажет вам, что у вас есть на вашем локальном веб-сервере (и если у вас ее нет, вы получите 404). Вы можете, конечно, установить его на любую страницу/порт, который вы хотите:

http://smackaho.st:54878/twitter/callback

Ответ 7

Изменен URL-адрес обратного вызова

http://localhost:8585/logintwitter.aspx

Преобразовать в

http://127.0.0.1:8585/logintwitter.aspx

Ответ 8

Я работал с URL-адресом обратного вызова Twitter на моем локальном хосте. Если вы не знаете, как создать виртуальный хост (это важно), используйте Ampps. Он действительно классный и легкий. В несколько шагов у вас есть свой собственный виртуальный хост, и тогда каждый URL будет работать над ним. Например:

  • скачать и установить ampps

  • Добавить новый домен. (здесь вы можете установить, например, twitter.local), что означает, что ваш виртуальный хост будет http://twitter.local, и он будет работать после шага 3.

  • Я работаю над Win, так что подходите к файлу своего хоста → C:\Windows\System32\Drivers\etc\hosts и добавьте строку: 127.0.0.1 twitter.local

Перезапустите свои усилители, и вы можете использовать обратный вызов. Вы можете указать любой URL-адрес, даже если вы используете какой-либо фреймворк MVC или у вас есть htaccess url rewrite.

Надеюсь, что эта помощь! Приветствия.

Ответ 9

Когда я разрабатываю локально, я всегда создаю локально размещенное имя разработчика, которое отражает проект, над которым я работаю. Я установил это в xampp через xampp\apache\conf\extra\httpd-vhosts.conf, а затем также в \Windows\System32\drivers\etc\hosts.

Итак, если я настраиваю локальный сайт-dev для example.com, я бы установил его как example.dev в этих двух файлах.

Короткий ответ: После правильной настройки вы можете просто обработать этот URL (http://example.dev) как будто это было живое (а не местное), когда вы настраивали свое приложение Twitter.

Аналогичный ответ был приведен здесь: https://dev.twitter.com/discussions/5749

Прямая цитата (выделено мной):

Вы можете указать любой действительный URL-адрес с именем домена, которое мы узнаем на страница с информацией о приложении. OAuth 1.0a требует, чтобы вы отправили oauth_callback на этапе маркера запроса потока, и мы будем на этом шаге примите динамический обратный вызов на основе locahost.

Это работало как прелесть для меня. Надеюсь, это поможет.

Ответ 10

Это можно сделать очень удобно с помощью Fiddler:

  • Откройте меню Инструменты > HOSTS...
  • Вставьте строку типа 127.0.0.1 your-production-domain.com, убедитесь, что установлен флажок "Включить переназначение запросов...". Не забудьте нажать Save.
  • Если вам необходим доступ к вашему реальному серверу, просто выйдите из Fiddler или отключите переназначение.
  • Запуск Fiddler снова включит переназначение (если оно отмечено).

Приятным бонусом является то, что вы можете указать пользовательский порт, например: 127.0.0.1:3000 your-production-domain.com (это невозможно было бы сделать с помощью файла hosts). Кроме того, вместо IP вы можете использовать любое доменное имя (например, localhost).

Таким образом, возможно (но не обязательно) регистрировать ваше приложение Twitter только один раз (при условии, что вы не возражаете использовать одни и те же ключи для локальной разработки и производства).

Ответ 11

отредактируйте эту функцию в TwitterAPIExchange.php в строке # 180

public function performRequest($return = true)
{
    if (!is_bool($return)) 
    { 
        throw new Exception('performRequest parameter must be true or false'); 
    }

    $header = array($this->buildAuthorizationHeader($this->oauth), 'Expect:');

    $getfield = $this->getGetfield();
    $postfields = $this->getPostfields();

    $options = array( 
        CURLOPT_HTTPHEADER => $header,
        CURLOPT_HEADER => false,
        CURLOPT_URL => $this->url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false
    );

    if (!is_null($postfields))
    {
        $options[CURLOPT_POSTFIELDS] = $postfields;
    }
    else
    {
        if ($getfield !== '')
        {
            $options[CURLOPT_URL] .= $getfield;
        }
    }

    $feed = curl_init();
    curl_setopt_array($feed, $options);
    $json = curl_exec($feed);
    curl_close($feed);

    if ($return) { return $json; }
}

Ответ 12

установить callbackurl в приложении Twitter: 127.0.0.1:3000 и установите WEBrick для привязки на 127.0.0.1 вместо 0.0.0.0

команда: rails s -b 127.0.0.1

Ответ 13

Похоже, что теперь Twitter позволяет localhost наряду с тем, что у вас есть в настройках Callback URL, если там есть значение.

Ответ 14

Я боролся с этим и последовал за десятком решений, в конце концов, все, что мне нужно было сделать, чтобы работать с любым ssl apis на локальном хосте, было:

Загрузите: файл cacert.pem

В php.ini * комментарий и изменение: curl.cainfo = "c:/wamp/bin/php/php5.5.12/cacert.pem"

  • Вы можете найти, где находится ваш файл php.ini на вашем компьютере, запустив php --ini в вашем CLI
  • Я поместил свой файл cacert.pem в тот же каталог, что и php.ini, для удобства.

Ответ 15

Это шаги, которые работали для меня, чтобы заставить Facebook работать с локальным приложением на моем ноутбуке:

  • goto apps.twitter.com
  • введите имя, описание приложения и URL вашего сайта. Примечание: для localhost: 8000 используйте 127.0.0.1:8000, так как первый не будет работать.
  • введите URL-адрес обратного вызова, соответствующий URL-адресу обратного вызова, указанному в TWITTER_REDIRECT_URI вашей заявке Примечание: например: http://127.0.0.1/login/twitter/callback (localhost не будет работать).
  • Важно ввести URL-адрес политики конфиденциальности и "Условия использования", если вы хотите запросить адрес электронной почты пользователя
  • установите флажок "Согласиться на условия".
  • нажмите [Create Your Twitter Application]
  • перейдите на вкладку [Ключи и токены доступа] вверху
  • скопируйте "Ключ потребителя (ключ API)" и "Секрет потребителя (секрет API)" в TWITTER_KEY и TWITTER_SECRET в своем приложении.
  • перейдите на вкладку "Разрешения" и установите для них "только чтение", "чтение и запись" или "чтение, запись и прямое сообщение" (используйте наименее интрузивный параметр, необходимый для вашего приложения, для входа в систему и для входа в OAuth "только" достаточно
  • В разделе "Дополнительные разрешения" установите флажок "Запросить адрес электронной почты от пользователей", если вы хотите, чтобы адрес электронной почты пользователя возвращался в данные входа в систему OAuth (в большинстве случаев проверяйте да)

Ответ 16

У меня была такая же проблема, и я не смог указать localhost как действительный URL-адрес обратного вызова. Поэтому я создал простой домен, чтобы помочь нам разработчикам: https://tolocalhost.com

Он перенаправит любой путь к вашему домену и порту localhost, в котором вы нуждаетесь. Надеюсь, он может быть полезен другим разработчикам.