使用 OAuth 和 OpenID 的 Authlogic - DoubleRenderError

Posted

技术标签:

【中文标题】使用 OAuth 和 OpenID 的 Authlogic - DoubleRenderError【英文标题】:Authlogic with OAuth and OpenID - DoubleRenderError 【发布时间】:2011-05-16 11:17:48 【问题描述】:

我的 authlogic 和 openid 工作正常,并且正在尝试集成 oauth 以进行 twitter 身份验证。我不想要注册和登录按钮,所以我遵循了这个例子:Implicit user creation with Authlogic and Authlogic OAuth plugin

我在初始注册和后续登录时收到了 DoubleRenderError,但刷新页面让操作成功完成。

我的 users_controller 创建:

定义创建 @user = User.new(params[:user]) @user.save 做 |结果| # 线 A 如果结果 flash[:notice] = "帐号已注册!" 重定向到 account_url 别的 除非@user.oauth_token.nil? @user = User.find_by_oauth_token(@user.oauth_token) 除非@user.nil? UserSession.create(@user) flash.now[:message] = "欢迎回来!" 重定向到 account_url 别的 redirect_back_or_default root_path 结尾 别的 redirect_back_or_default root_path 结尾 结尾 结尾 结尾

我的 user_sessions_controller 创建:

定义创建 @user_session = UserSession.new(params[:user_session]) @user_session.save 做 |结果| 如果结果 flash[:notice] = "登录成功!" redirect_back_or_default account_url 别的 渲染 :action => :new 结尾 结尾 结尾

有没有办法解决这个问题?谢谢

【问题讨论】:

【参考方案1】:

在多次失败后,以下似乎适用于正常的 authlogic 用户名/密码、使用 Twitter 的 OAuth 以及至少适用于 google 和 yahoo 的 OpenID,这就是我感兴趣的全部

定义创建 @user = User.new(params[:user]) @user.save 做 |结果| # 线 A 如果结果 flash[:notice] = "帐号已注册!" 重定向到 account_url 并返回 别的 如果@user.oauth_token @user = User.find_by_oauth_token(@user.oauth_token) UserSession.create(@user) flash.now[:message] = "欢迎回来!" 重定向到 account_url 并返回 别的 " flash[:notice] = "出了点问题。可能名称或电子邮件已在使用中。" 重定向到 register_path 并返回 结尾 结尾 结尾 结尾

此外,在成功和失败重定向/渲染之后,我在用户控制器的更新块中添加了“并返回”

【讨论】:

以上是关于使用 OAuth 和 OpenID 的 Authlogic - DoubleRenderError的主要内容,如果未能解决你的问题,请参考以下文章

OpenId / OAuth 2 流 - 使用 AWS Cognito 的场景

OpenID 与 OAuth [重复]

OAuth/OpenID - 我应该使用哪个?

OAuth2 密码授予与 OpenID 连接

OpenId 连接和 OAuth 2.0 密码授予 - 有啥区别?

在集成测试中使用 oauth/openid 进行身份验证