我现在用的宝石omniauth-google-oauth2
在我来说,我有2米不同的范围:
我想使用谷歌验证两种但由于只有一个回调URL我不知道如何识别如果认证是从FrontUser或管理用户和未来。
我不能用“名”或“电子邮件”为范围的标识符,因为相同的名称/电子邮件可以在这两个范围。
我曾试图定义2个不同的回调网址,并添加帕拉姆redirect_uri
到第一验证网址:
对于管理员登录:
<%= link_to "Login with Google", "/auth/google_oauth2?redirect_uri=http://example.com/admin/auth/google_oauth2/callback" %>
对于前登录:
<%= 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
只是忽略。
如果我至少可以发送将在回调返回就足够了一个标志参数。
我可以实现什么解决办法吗?
我明白了,其实,我可以发送在回调返回PARAM:
<%= link_to "Login with Google", "/auth/google_oauth2?from=admin" %>
然后在回调控制器动作我可以看到它:
request.env['omniauth.params']['from']
然后,我可以派生基础上,我的逻辑。