Ruby on rails 如何为oauth回调配置路由
我正在使用gem与谷歌服务进行通信。我不明白如何实现回调,它使用OAuth代码接收响应以获取访问令牌。当我在Ruby on rails 如何为oauth回调配置路由,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在使用gem与谷歌服务进行通信。我不明白如何实现回调,它使用OAuth代码接收响应以获取访问令牌。当我在回调方法中设置断点时,它似乎从未被调用过 这是我的密码: 路线: match '/oauth2/callback' => 'reports#callback' 实际重定向的url: http://localhost/oauth2/callback?code=111111 报表控制器: def new client = OAuth2::Client.new(ENV['GA_C
回调
方法中设置断点时,它似乎从未被调用过
这是我的密码:
路线:
match '/oauth2/callback' => 'reports#callback'
实际重定向的url:
http://localhost/oauth2/callback?code=111111
报表控制器:
def new
client = OAuth2::Client.new(ENV['GA_CLIENT_ID'], ENV['GA_SECRET_KEY'], {
:authorize_url => 'https://accounts.google.com/o/oauth2/auth',
:token_url => 'https://accounts.google.com/o/oauth2/token'
})
redirect_to client.auth_code.authorize_url({
:scope => 'https://www.googleapis.com/auth/analytics.readonly',
:redirect_uri => 'http://localhost/oauth2/callback',
:access_type => 'offline'
})
end
def callback
oauth_code = params[:code]
# Create access token with oauth_code
end
Google服务器正在尝试访问此url
http://localhost/oauth2/callback?code=111111
这是无效的
你需要一个域名才能使用像OAuth这样的服务,因为谷歌服务器必须能够在互联网上找到你的计算机
要在开发机器上执行此操作,您应该:
NAT
的路由器后面,您可能需要将请求重定向到端口80上的调制解调器到您的计算机:如果您不这样做,您的调制解调器将在端口80上从谷歌收到一个包,并会说“不适合我”,丢弃它。您可以在调制解调器菜单中执行此操作-查找端口转发或NAT部分传递给google的重定向url必须与从客户端浏览器看到的回调url完全匹配。在url中使用localhost没有问题(关于DNS和NAT的fotanus语句是错误的)。如果您在不同的端口(例如8080)运行您的容器,您必须:
- 在谷歌云中指定url:
http://localhost:8080/oauth2/callback
- 在客户端请求中指定相同的返回url
http://SITE_NAME/oauth2/callback
在my production env中进行测试时,不会触发回调。我确保使用我的生产客户端id和来自google api控制台的机密,以及匹配重定向url。我甚至添加了approval\u prompt=>'force'
@mnort9,但在您的生产日志中却没有任何内容,比如无法路由的内容?可能会发生两件事:1)谷歌没有向你发送任何请求,或者2)它发送了一个错误的请求,并且得到了一个路由错误。我建议您也试着在生产环境中加载控制台,并手动尝试OAuth调用,看看您是否能发现一些错误。我将尽快在本地测试您的方法。我使用http://127.0.0.1:3000/
作为回调url。谢谢你的帮助。如果你不介意,请看看我的另一个问题。谢谢