gpt4 book ai didi

ruby-on-rails - 使用Koala和omniauth-facebook的Facebook token 到期和续订

转载 作者:行者123 更新时间:2023-12-03 11:38:32 26 4
gpt4 key购买 nike

我正在编写一个使用omniauth-facebook来针对FB验证用户身份(并为该用户获取FB OAuth访问 token )的Rails应用。然后,该应用使用已保存的OAuth token ,使用Koala对FB Graph API进行各种调用。

每当用户重新进行身份验证时(通常在他们登录到我的应用程序时),我都会更新保存的 token 。即使这样,保存的 token 仍会不时过期(或变得无效)。

在使用Koala时防止身份验证失败和更新 token 的最佳实践是什么?

是否应该将所有调用都包装在begin / rescue块中,并使用异常处理程序根据FB重新对用户进行身份验证?

是否有某种方法(使用Koala)来利用here描述的“扩展访问 token ”过程?如果不是,是否存在编写自己的代码以从Koala调用中自己提取新 token 的最佳实践?

最佳答案

我所拥有的是一个before_filter,它在需要 Activity Facebook session 的每个页面上触发。这样的事情应该起作用:

  before_filter :reconnect_with_facebook
def reconnect_with_facebook
if current_account && current_account.token_expired?(session[:fb]["expires"])

# re-request a token from facebook. Assume that we got a new token so
# update it anyhow...
session[:return_to] = request.env["REQUEST_URI"] unless request.env["REQUEST_URI"] == facebook_request_path
redirect_to(with_canvas(facebook_request_path)) and return false
end
end

token_expired?方法看起来像这样:
def token_expired?(new_time = nil)
expiry = (new_time.nil? ? token_expires_at : Time.at(new_time))
return true if expiry < Time.now ## expired token, so we should quickly return
token_expires_at = expiry
save if changed?
false # token not expired. :D
end

关于ruby-on-rails - 使用Koala和omniauth-facebook的Facebook token 到期和续订,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10249778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com