Заставьте местную разработку работать с Facebook / Google API - PullRequest
0 голосов
/ 11 января 2012

Я работаю над внедрением omniauth в проект Rails. Моя проблема в том, что провайдеры аутентификации - Twitter, Google, Facebook и т. Д. Требуют, чтобы я создал приложение с URL-адресом, который ограничивает запросы на аутентификацию из любой точки, кроме URL-адреса. Мне нужно иметь возможность локально тестировать, а также запускать код в производственном процессе, но, например, Facebook не разрешает 2 домена и не позволяет localhost в любом случае.

Так, каковы мои варианты?

Ответы [ 4 ]

3 голосов
/ 04 мая 2012

Вот блог с моим решением: http://make.bettermistak.es/2012/05/03/how-to-create-a-local-sandbox-facebook-app/

Вот соответствующий бит: «Facebook проверяет, что все запросы для вашего приложения поступают из правильного домена - они не разрешают запросы от localhost или 127.0.0.1 - и эта информация может быть обновлена ​​в настройках ваших приложений в разделе« URL-адрес хостинга ». Добавьте local.herokuapp.com к своим URL-адресам хостинга и сохраните этот параметр. Затем отредактируйте файл / etc / hosts так, чтобы локальный контент находился в домене local.herokuapp.com. Этот файл скрыт, поэтому из командной строки. введите sudo vi / etc / hosts. (Замените ваш любимый редактор на vi.) Нам нужно использовать sudo, потому что этот файл заблокирован. Добавьте строку «127.0.0.1 local.herokuapp.com» ниже «127.0.0.1 localhost» и сохраните и выйдите из текстового редактора. "

3 голосов
/ 11 января 2012

На работе у нас есть несколько приложений, настроенных для разных сред.На локальном компьютере добавьте запись в /etc/hosts (при условии, что вы используете Linux) eg: 127.0.0.1 mydomain.local.

В настройках приложения facebook для локальной среды добавьте это в качестве URL-адреса.Большинство вещей, за исключением тех случаев, когда Facebook нуждается в очистке вашего сайта (кнопки «Мне нравится»), работают.

1 голос
/ 06 мая 2012

Насколько я знаю, вы должны подписать два приложения для своего приложения (одно для удаленной стороны, одно для локальной стороны)

К счастью, есть способ уменьшить сложность (при условии, что вы работаете в Linux):

Вы можете настроить .bash_profile (локальный компьютер и удаленный компьютер отдельно):

export YOURAPP_APP_ID="XXXXX"                                         
export YOURAPP_APP_SECRET="XXXXX"

И используйте ENV ['YOURAPP_APP_ID'] и ENV ['YOURAPP_APP_SECRET'] в своем коде. Например, вы можете написать код в rails:

config.omniauth :facebook, ENV['YOURAPP_APP_ID'], ENV['YOURAPP_APP_SECRET']

Таким образом, вы можете использовать один и тот же код как на локальной, так и на удаленной стороне. Это будет намного легче поддерживать.

Если вы используете Heroku для размещения своего приложения, вы можете обратиться к на этой странице для настройки переменных среды.

0 голосов
/ 11 января 2012

Я создал два приложения на Facebook, одно из которых я запускаю в режиме песочницы для целей разработки.Будет ли это вариант для вас?

...