Как я могу указать разрешения Facebook (он же объем), который OmniAuth запрашивает DYNAMICALLY? - PullRequest
9 голосов
/ 20 января 2011

Этот вопрос похож на Как я могу указать, какой доступ мне нужен из учетных записей моего пользователя Facebook при использовании OmniAuth? , но с предупреждением.

Я использую OmniAuth для авторизации пользователей Facebook на моем сайте. Для обычного входа в систему / регистрации, запрос пользователя для стандартных разрешений Facebook является приемлемым. Но на моем сайте есть функция, которая требует расширенных разрешений (доступ к их фотографиям на Facebook). Я хочу запрашивать расширенные разрешения только для пользователей, когда / если они используют функцию фотографий нашего сайта в Facebook.

Все ответы, которые я нашел в Интернете о том, как установить разрешения facebook для omniauth, касаются простого добавления параметра области действия в инициализаторе OmniAuth, например:

ActionController::Dispatcher.middleware.use OmniAuth::Strategies::Facebook, 'app_id', 'app_secret', {:scope => 'email,offline_access,the,scope,you,want}

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

Кто-нибудь знает, как это сделать? Заранее спасибо.

Ответы [ 3 ]

11 голосов
/ 29 апреля 2011

Возможно, вы уже нашли решение этой проблемы, но я подумал, что я должен помочь тем, кто все еще хочет это решить. Мое решение позволяет запрашивать как можно меньше предварительных разрешений Facebook, а затем динамически запрашивать их по мере необходимости.

http://www.mikepackdev.com/blog_posts/2-Dynamically-Requesting-Facebook-Permissions-with-OmniAuth

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

5 голосов
/ 07 марта 2011

Похоже, они добавляют это в Omniauth, но он все еще находится в бета-версии.

Вы добавляете

:setup => true

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

https://github.com/intridea/omniauth/wiki/Setup-Phase

https://github.com/intridea/omniauth/wiki/Dynamic-Providers

0 голосов
/ 20 января 2011

Я думаю, вы не можете сделать это должным образом. Потому что вы не можете быть уверены, что ваш пользователь использует только функцию фотографии. Вы пользователь можете получить доступ ко всем частям вашего приложения фото функцию и другие функции. Когда пользователь вошел в систему и переключился с вашей функции фото на другую функцию, вы не можете попросить ее повторно зарегистрироваться. чтобы получить доступ к этой другой функции.

Все пользователи на самом деле не проверяют, какой вид доступа они авторизуют, поэтому не беспокойтесь о большом количестве запросов на разрешение.

...