Как сделать facebook авторизацию через удаленный прокси - PullRequest
0 голосов
/ 14 марта 2012

Скажем, у меня есть приложение с Sinatra REST API на http://example.com:4567. С моим приложением у меня есть дизайнер, работающий над интерфейсом.Вместо того, чтобы устанавливать его с локальным бэкэндом, я редактирую его файл hosts следующим образом:

127.0.0.1        local.example.com

и его httpd-vhosts.conf следующим образом:

ProxyPass /api http://example.com:4567
ProxyPassReverse /api http://example.com:4567

, чтобы APIвызовы передаются на удаленный хост.Затем я создаю vhost для local.example.com в apache, который сопоставляется с его локальным каталогом, где находится наше передовое хранилище.Это позволяет мне предоставить ему удаленный сервер с локальным интерфейсом.

Причина поддомена заключается в том, что мы выполняем аутентификацию Facebook, которая имеет свои ограничивающие доменные политики для аутентификации.Мы можем успешно авторизовать пользователя в Facebook и перенаправить обратно в приложение, но при попытке получить токен доступа вы получите ответ 400 с сообщением:

{"error"=>{"message"=>"Missing client_id parameter.", "type"=>"OAuthException", "code"=>101}}

Я полагаю, что client_id установлен правильно, так как он установленв стойке: oauth: клиентский объект правильно, и поток идентичен и происходит сбой только тогда, когда домен отличается.Единственная мысль, которая у меня возникла, заключается в том, что Facebook может не понравиться аутентификация пользователя с local.example.com, в то время как токен доступа запрашивается с example.com, но я понимаю, что facebook будет аутентифицироваться на всех поддоменах.Я также занесен в белый список local.example.com в моем приложении.

Есть идеи или советы, как этого добиться?Заранее спасибо.

1 Ответ

0 голосов
/ 24 апреля 2012

Оказывается, это не проблема домена, а fb_graph, fb api с открытым исходным кодом от nov, по умолчанию использует базовую аутентификацию, вам нужно установить аутентификацию на что-то отличное от ": basic", когда вы получаете токен доступа чтобы решить эту ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...