我使用的是Rails6和React。在我的平台上注册的第一步是通过Steam登录。我做到了这一点,但现在当我将用户重定向到localhost:3000/auth/steam
(omniauth-steam
-gem提供的路由(时,它会创建一个新用户,但我不知道如何将其重定向回React,并使用该新创建用户的数据。
在React中,我只有一个简单的功能,当用户点击Sign in with Steam
按钮时,它会重定向用户:
const _steamLogin = () => {
window.location.replace(`${backend_url}/auth/steam`)
}
这是Rails中的控制器,在用户成功登录Steam帐户后处理回调:
class SteamController < ApplicationController
skip_before_action :verify_authenticity_token, only: :auth_callback
def auth_callback
# Get Steam user data
auth = request.env['omniauth.auth']
# Create new Application
application = Application.new(steam_uid: auth['uid'], birthday_date: DateTime.now.to_date)
if application.save
render json: application, status: 201
else
render json: application.errors.full_messages, status: 400
end
end
end
为了在不深入应用程序逻辑的情况下更好地理解它,Application
是User
模型。
最后,问题是如何在auth_callback
成功完成或出现错误后重定向回React,以便显示成功消息或错误消息。
我对Rails没有任何了解,但我认为用简单的方法来做这件事,你可以使用一个变量,设置和取消设置这个变量,并在看到这个变量有真实状态后替换url,你有更多的方法在登录后将页面重定向到你的网站;
loggedin>log=真未登录>log=错误