我正在使用宝石omniauth-google-oauth2
就我而言,我有2个不同的范围:
我想同时使用Google Auth,但是由于只有一个回调URL,我不知道如何识别此身份验证是来自FrontUser还是AdminUser。
我不能将“名称”或“电子邮件”用作作用域的标识符,因为在两个作用域中都可以使用相同的名称/电子邮件。
我尝试定义2个不同的回调URL,并将参数redirect_uri
添加到第一个身份验证URL:
对于管理员登录:
<%= link_to "Login with Google", "/auth/google_oauth2?redirect_uri=http://example.com/admin/auth/google_oauth2/callback" %>
对于Front登录:
<%= link_to "Login with Google", "/auth/google_oauth2?redirect_uri=http://example.com/front/auth/google_oauth2/callback" %>
它的工作原理几乎是完美的,问题是request.env['omniauth.auth']
是空的,就像我们在其他issues中看到的那样。
我也尝试过:
<%= link_to "Login with Google", "/auth/google_oauth2?callback_path=/admin/auth/google_oauth2/callback" %>
但是参数callback_path
只是被忽略。
如果我至少可以发送一个在回调中返回的flag参数就足够了。
我可以实施什么解决方案?
答案 0 :(得分:0)
事实上,我可以发送在回调函数中返回的参数:
<%= link_to "Login with Google", "/auth/google_oauth2?from=admin" %>
然后在回调控制器操作中,我可以看到它:
request.env['omniauth.params']['from']
然后我可以基于此派生我的逻辑。