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


112

Чи комусь іншому важко отримати URL-адресу зворотного виклику Twitters oAuth, щоб потрапити на їхнє середовище розробки localhost. Мабуть, його відключили недавно. http://code.google.com/p/twitter-api/isissue/detail?id=534#c1

Хтось має рішення. Я не хочу дуже зупиняти свій розвиток


Це працювало для мене, встановивши URL-адресу зворотного дзвінка Twitter на мою реальну URL-адресу веб-сайту. Під час тестування в localhost -> twitter реєстрація переспрямована на localhost (замість URL-адреси веб-сайту).
Sudhakar Krishnan

Відповіді:


135

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

Налаштуйте .hosts (Windows) або etc / hosts файл, щоб вказати живий домен на ваш IP-адрес localhost. як от:

127.0.0.1 xyz.com

де xyz.com - ваш реальний домен.

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

Також стаття дає пораду альтернативно використовувати послугу скорочення URL-адрес. Скоротіть локальну URL-адресу та надайте результат як зворотній дзвінок.

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

Крім того, здається, що це працює, щоб надати, наприклад http://127.0.0.1:8080, зворотний дзвінок у Twitter, а не http://localhost:8080.


3
Чи може це викликати таку помилку: Віддалений сервер повернув помилку: (401) Неавторизовано?
DevDave

Як працює localhost, коли до нього немає тунелю? Це насправді не вдарив ур місцевої машини?
Джек Тук

@JackTuck Зворотний виклик викликає браузер користувача, а не сервери Twitter.
пухнастий

25

Мені просто довелося це зробити минулого тижня. Мабуть localhost, не працює, але 127.0.0.1йде фігура.

Звичайно, це передбачає, що ви реєструєте два додатки в Twitter, один для прямого життя, www.mysite.comа інший для 127.0.0.1.



8

Так, його було відключено через недавню проблему із безпекою, яку знайшли в OAuth. Наразі єдиним рішенням є створення двох додатків OAuth - одного для виробництва та одного для розробки. У програмі розробки ви встановлюєте URL-адресу зворотного дзвінка localhost замість живої.


Я просто спробував це зробити, але він не приймає localhost: 3000 як формат URL ...
Девід Н. Уелтон

1
Так, вони, здається, фільтрують такі URL-адреси. :( Але підтримка користувальницьких URL-адрес зворотного виклику повертається - можливо, вони там підтримуються.
arikfr

8

URL-адреса зворотного дзвінка відредагована

http://localhost:8585/logintwitter.aspx

Перетворити в

http://127.0.0.1:8585/logintwitter.aspx

7

Ось як я це зробив:

Зареєстрована 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");

Налаштування Config:

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

Я сподіваюся, що це допомагає!


7

Використовуйте http://smackaho.st

Що це робиться, це проста асоціація DNS до 127.0.0.1, яка дозволяє обійти фільтри на localhost або 127.0.0.1:

smackaho.st. 28800 В А 127.0.0.1

Тож якщо ви натиснете на посилання, воно відобразить, що ви маєте на своєму локальному веб-сервері (а якщо у вас його немає, ви отримаєте 404). Ви, звичайно, можете встановити його на будь-яку потрібну сторінку / порт:

http://smackaho.stinding4878/twitter/callback


6
smackaho.st більше не доступний tbaggery.com/2010/03/04/smack-a-ho-st.html . Використовуйте замість lvh.me. Він прямує до localhost.
Джастін

5

Я працював з URL-адресою зворотного дзвінка в Twitter на своєму localhost. Якщо ви не впевнені, як створити віртуальний хост (це важливо), використовуйте Ampps. Він справді крутий і легкий. За кілька кроків у вас є власний віртуальний хост, і тоді кожна URL-адреса буде працювати над ним. Наприклад:

  1. завантажити та встановити підсилювачі

  2. Додати новий домен. (тут ви можете встановити, наприклад, twitter.local), що означає, що ваш віртуальний хост буде http: //twitter.local, і він буде працювати після кроку 3.

  3. Я працюю над Win, тому перейдіть до вашого файлу хоста -> C: \ Windows \ System32 \ Драйвери \ тощо \ господарі та додайте рядок: 127.0.0.1 twitter.local

Перезавантажте свої Ampps і ви можете використовувати зворотний дзвінок. Ви можете вказати будь-який URL-адрес, навіть якщо ви використовуєте якийсь MVC фреймворку або перезаписуєте URL-адресу htaccess.

Сподіваюся, що ця допомога! Ура.


Дякую за пораду. У Linux просто додайте доменне ім'я розробки в / etc / hosts
jeremyvillalobos

3

Коли я розвиваюсь на місцевому рівні, я завжди налаштовую розроблене місцеве ім’я, яке відображає проект, над яким я працюю. Я встановлюю це в xampp через xampp \ apache \ conf \ extra \ httpd-vhosts.conf, а потім також у \ Windows \ System32 \ driver \ etc \ hosts.

Отже, якщо я налаштовую локальний сайт розробників для example.com, я б встановив його як example.dev у цих двох файлах.

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

Аналогічна відповідь була надана тут: https://dev.twitter.com/discussions/5749

Пряма цитата (наголос додано):

Ви можете надати будь-яку дійсну URL-адресу з доменним іменем, яке ми розпізнаємо на сторінці деталей програми OAuth 1.0a вимагає надіслати значення oauth_callback на кроці запиту потоку, і ми приймемо динамічний зворотний виклик на основі локахосту на цьому кроці .

Це спрацювало як шарм для мене. Сподіваюся, це допомагає.


3

З Fiddler це можна зробити дуже зручно :

  • Відкрити меню Інструменти> ХОСТИ ...
  • Вставте такий рядок 127.0.0.1 your-production-domain.com, переконайтеся, що "Увімкнути перезапис запитів ...". Не забудьте натиснути Save.
  • Якщо потрібен доступ до вашого справжнього виробничого сервера, просто вийдіть з Fiddler або відключіть перезапис.
  • Повторне запуску Fiddler увімкне перезастосування (якщо воно встановлено).

Приємним бонусом є те, що ви можете вказати користувальницький порт, як-от так: 127.0.0.1:3000 your-production-domain.com(досягти цього неможливо через файл хостів). Також замість IP ви можете використовувати будь-яке доменне ім’я (наприклад, localhost).

Таким чином, можна (але не обов’язково) зареєструвати свою програму Twitter лише один раз (за умови, що ви не заперечуєте проти використання одних і тих же ключів для місцевої розробки та виробництва).


2

відредагуйте цю функцію на 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; }
}

Ви можете завантажити TwitterAPIExchange.php звідси github.com/J7mbo/twitter-api-php
помічник

2

У мене був такий самий виклик, і мені не вдалося надати localhost як дійсну URL-адресу зворотного виклику. Тому я створив простий домен, щоб допомогти нам розробникам: https://tolocalhost.com

Він перенаправить будь-який шлях до вашого домену localhost та потрібного порту. Сподіваємось, це може бути корисним іншим розробникам.


Відмінний ресурс, але ваш домен додає "/" до кінця URL-адреси, що призводить до 404 в деяких випадках. ви можете, будь ласка, виправити це? Наприклад, він переспрямовує як "localhost / somename /? <response>, але це має бути" localhost / somename? <Response>
Channa

@Channa Я намагався відтворити це, але здається, що сценарій працює правильно. Який браузер ви використовуєте? Я спробував Chrome, Safari, Firefox, і він працює як очікувалося.
Йорген

Це трапляється зі мною і в Chrome, і в Firefox. Це ім'я хоста, яке я помістив на вашу сторінку " localhost: 8080 / dashboard / twitterRedirect.jsp ", але коли він перенаправляє, він переходить до " localhost: 8080 / dashboard / twitterRedirect.jsp / ... " Будь ласка, зверніть увагу на символ "/" перед питанням позначка. Це призведе до того, що мій додаток надішле мені 404
Channa

1
@Channa, ви не повинні містити всю URL-адресу в полі імені хоста. Він називається: ім'я хоста, а не URL ;-) Ідея полягає в тому, щоб мати можливість замінити "localhost" на щось на зразок: my.localhost.bla, тоді він використовуватиме це замість localhost. У вашому випадку поле хосту повинно бути localhost. Ви встановите порт 8080 і налаштуєте переспрямування перейти на: tolocalhost.com/dashboard/twitterRedirect.jsp, це перенаправить на: localhost: 8080 / dashboard / twitterRedirect.jsp
Jørgen

2

Здається, нині http://127.0.0.1теж припинили свою роботу. Просте рішення - використовувати http://localtest.meзамість http://localhostцього завжди вказівку на 127.0.0.1І ви можете навіть додати до нього будь-який довільний субдомен, і він все одно вказуватиме на127.0.0.1

Див. Веб-сайт


1

встановіть зворотний виклик у додатку twitter: 127.0.0.1:3000 та встановіть, щоб WEBrick прив’язувався до 127.0.0.1 замість 0.0.0.0

команда: рейки s -b 127.0.0.1


1

Схоже, Twitter тепер дозволяє localhostпоряд з тим, що ви маєте в Callback URLналаштуваннях, якщо там є значення.


1

Я боровся з цим і дотримувався десятка рішень, врешті-решт, все, що мені потрібно було зробити для роботи з будь-яким 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.

1

Це кроки, які допомогли мені 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-адреси "політики конфіденційності" та "умови використання", якщо ви хочете запитати електронну адресу користувача
  • встановіть прапорець погоджуватися з умовами
  • натисніть [Створити свою програму Twitter]
  • перейдіть на вкладку [Ключі та маркери доступу] вгорі
  • скопіюйте "Consumer Key (API Key)" та "Consumer Secret (API Secret)" на TWITTER_KEY та TWITTER_SECRET у вашій заявці
  • натисніть на вкладку "Дозволи" та встановіть відповідним чином "лише для читання", "читання і запис" або "читання, запис і пряме повідомлення" (використовуйте найменш нав'язливий варіант, необхідний для вашої програми, для справедливого та входу в OAuth "тільки для читання" є достатній
  • У розділі "Додаткові дозволи" встановіть прапорець "запит електронних адрес від користувачів", якщо ви хочете повернути електронну адресу користувача до даних входу в OAuth (у більшості випадків встановіть прапорець "Так")
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.