gpt4 book ai didi

ruby-on-rails - 使用 HTTP.get_response 检索 Facebook 访问 token 时出现 Rails EOF 错误

转载 作者:数据小太阳 更新时间:2023-10-29 07:12:24 24 4
gpt4 key购买 nike

我试图在我的网站上实现使用 Facebook 登录功能,但在尝试从 Facebook 取回访问 token 时遇到障碍。这是我的代码:

if params[:error_reason] == "user_denied" then
flash[:error] = "To login with Facebook, you must click 'Allow' to let the site access your information"
redirect_to :login
elsif params[:code] then
token_uri = URI.parse("https://graph.facebook.com/oauth/access_token?client_id=****************&redirect_uri=http://localhost:3000/auth/fblogin&client_secret=***************&code="+URI.escape(params[:code]))
response = Net::HTTP.get_response(token_uri)
session[:response] = response
data = ActiveSupport::JSON.decode(response)
access_token = data[:access_token]
flash[:error] = access_token
redirect_to :register
end

这是在 fblogin Controller 函数中,该函数是初始重定向的目标以获取授权代码(params[:code])。

但是当我运行这个时,我得到以下错误:

AuthController#fblogin 中的 EOFError

Net::HTTP.get_response(token_uri) 行。我到处搜索,找不到任何东西来表明这意味着什么。可能是 Facebook 在其访问 token 中使用的模糊字符吗?我完全迷路了!

最佳答案

您收到 EOFError 是因为您尝试使用仅适用于 http 的代码连接到 https URL。请参阅标题为“SSL/HTTPS 请求”的部分,网址为 this Net::HTTP Cheat Sheet。基础知识。

但是,我建议使用第三方库来为您管理它,例如 OAuth2为了利用 Facebook 的 OAuth2 API,您可以在其中编写如下代码:

def client
OAuth2::Client.new('app_id', 'app_secret', :site => 'https://graph.facebook.com')
end

# in your callback code:
access_token = client.web_server.get_access_token(params[:code], :redirect_uri => 'http://localhost:3000/auth/fblogin')
user = JSON.parse(access_token.get('/me'))

如果你真的想自己提出请求,你可以看看像Faraday 这样的库。为您执行 HTTPS 请求。

关于ruby-on-rails - 使用 HTTP.get_response 检索 Facebook 访问 token 时出现 Rails EOF 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5082152/

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