我正在使用devise / omniauth进行facebook身份验证,效果很好。但是,我想添加一个流程,其中现有(非Facebook)用户有能力将他的帐户与Facebook连接。这将需要不同的Facebook权限。所以我似乎无法找到两件事
任何想法?感谢
答案 0 :(得分:2)
对1的回答非常简单:只需在这样的omniauth_callbacks_controller :: process_callback方法中添加一个if路径
# If a user is signed in then he is trying to link a new account
if user_signed_in?
if authentication.persisted? # This was a linking operation so send back the user to the account edit page
flash[:success] = I18n.t "controllers.omniauth_callbacks.process_callback.success.link_account",
:provider => registration_hash[:provider].capitalize,
:account => registration_hash[:email]
else
flash[:error] = I18n.t "controllers.omniauth_callbacks.process_callback.error.link_account",
:provider => registration_hash[:provider].capitalize,
:account => registration_hash[:email],
:errors =>authentication.errors
end
redirect_to edit_user_account_path(current_user)
这是我在我的应用程序中所做的,它工作正常。
关于问题2我不知道如何支持2种不同的facebook身份验证配置,但我很难看到这对用户有用,因为他们需要在两条路径上都有一致的体验:“使用facebook登录”和“链接你的帐户到Facebook“。 (如果您仍然想要追求这条路径,我将探索的一个想法是使用其独立的密钥和配置创建一个新的Facebook应用程序......)
希望得到这个帮助。
答案 1 :(得分:0)
实现多层权限的一种简单方法是使用Facebook Javascript SDK(如果需要,还可以使用omniauth)。您可以简单地指定不同的"范围"参数,指定您希望的每次调用所需的权限。我正在做的是让omniauth提供一组基本权限,然后,在用户通过omniauth连接之后(并因此将数据存储在我们的数据库中),如果需要进一步的权限,我们向他们展示了基于JS的按钮,它们提供了扩展的权限集。如果您想查看用户授予您的特定权限,您可以使用me/permissions
API调用。