[英]Omniauth: How to set authentication provider details at runtime
我有一个可从2个域访问的rails应用程序。 Facebook要求我为每个域注册一个Facebook应用程序,并为每个域提供凭据。 使用Omniauth,我只能指定在应用程序启动时设置的一组凭据。 但是,我需要根据请求的主机为FB提供不同的凭据。
这里有两个问题:
任何建议都非常感谢!
复制评论中的答案,以便从“未答复”过滤器中删除此问题:
我现在自己解决了这个问题 问题是fb策略第二次回调fb来获取访问令牌。 在第二次调用中,使用了错误的凭证(初始化程序中设置的凭据)。 所以我不得不修补OAuth2策略,以便再次调用rails应用程序,为第二次调用设置运行时凭据。 在回调中,通常只处理Omniauth的响应,我设置凭证并返回404,除非request.env [“omniauth.auth”]存在。 这很好,但对没有动态提供商的应用程序有一些副作用。
现在的问题是,即使应用程序不想在运行时设置凭证,它也必须为回调添加一个条件,就像request.env [“omniauth.auth”]一样,以避免在执行时执行回调代码它被称为第一次。 解决方案可能是向Omniauth构建器添加一个参数,如:dynamic_provider,如果已设置,则只调用应用程序。
〜每个Nico回答
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.