当用户使用Facebook帐户登录时,这是一个关于从后端安全检索用户记录的问题。
loginToFacebook = () => {
FB.login((response) => {
FB.api('/me', {fields: 'id,name,timezone,email,age_range,picture'}, (response) => {
this.props.receiveCurrentUser({
uid: response.id,
email: response.email,
name: response.name,
timezone: response.timezone,
picture: response.picture.data.url,
minAge: response.age_range.min,
})
})
}, {scope: 'email, public_profile'})
}
此时,我有用户的信息。我现在只尝试使用uid
从后端找到用户记录。
@user = User.find_by(uid: params[:uid]) if params[:uid]
head :unprocessable_entity unless @user
但是,如果有人知道任何人的Facebook帐户({1}},那么这很容易受到损害。我考虑过在后端存储user_id
并找到如下所示的用户:
access_token
问题是@user = User.find_by(access_token: params[:access_token]) if params[:access_token]
head :unprocessable_entity unless @user
到期,而您从Facebook登录获得的access_token
可能与后端不同步。
这样做的正确方法是什么?
提前感谢您的建议。