Rails 3: (Devise + Omniauthable) Facebook app_request возвращает параметр строки запроса, как я могу его получить? - PullRequest
2 голосов
/ 28 марта 2012

Как я могу получить параметры URL запроса, поступающие от обратного вызова из Facebook?

Я использую devise + omniauthable, и все работает отлично. Я просто не знаю, как получить доступ к этим параметрам. Я знаю, что omniauth сохраняет их автоматически, и что я могу получить их, используя request.env['omniauth.origin'], но где мне сделать этот запрос?

У меня есть сервисный контроллер (class Users::ServicesController < Devise::OmniauthCallbacksController), который выполняет весь процесс аутентификации с использованием омнигабельных методов (это сделано для нескольких разных провайдеров), и все работает нормально, когда я использую метод регистрации с root-пользователями / callback / Facebook Я могу получить все параметры, которые предоставляет omniauth = request.env['omniauth.auth'], и сохранить их в базе данных или обновить информацию о пользователях.

Если я также хочу получить доступ к параметрам URL-адреса запроса, поступившим от прямого обратного вызова из Facebook (пользователь принимает Facebook app_request с платформы Facebook), в этом случае Facebook добавляет пользователей / callback / Facebook? request_ids = xv552180 72

Как я могу получить эти request_ids из URL? Я хотел бы использовать его для проверки того, какой запрос был принят (гипотетически у пользователя может быть несколько запросов от других пользователей, но когда он принимает ее, каждый раз принимается только один). Затем я хочу иметь возможность получить request_id и передать его методу, который обновит дружеские отношения для текущего принимающего пользователя и пользователя, отправившего этот запрос, и который был принят только.

Мне нужно сохранить его в базе данных на моем контроллере служб, или я могу получить к нему доступ также на лету сразу после того, как пользователь перенаправил на мое приложение?

На странице omniauth об этом ничего нет.

...