gre*_*inn 5 ruby ruby-on-rails oauth-2.0 doorkeeper
我让 Doorkeeper 在本地工作,但是一旦部署到生产环境中,我就会遇到一个奇怪的问题。我无法创建新应用程序,请参见下文:
$> app = Doorkeeper::Application.new :name => 'test', :redirect_uri => 'http://test.com'
=> #<Doorkeeper::Application id: nil, name: "test", uid: nil, secret: nil, redirect_uri: "http://test.com", scopes: "", created_at: nil, updated_at: nil>
$> app.save
(0.8ms) BEGIN
(0.8ms) BEGIN
Doorkeeper::Application Exists (0.7ms) SELECT 1 AS one FROM `oauth_applications` WHERE `oauth_applications`.`uid` = BINARY '56bf468e5a1d116e3daef75ecc49b6b6ba313a9a79815b5b4683d56851880c49' LIMIT 1
Doorkeeper::Application Exists (0.7ms) SELECT 1 AS one FROM `oauth_applications` WHERE `oauth_applications`.`uid` = BINARY '56bf468e5a1d116e3daef75ecc49b6b6ba313a9a79815b5b4683d56851880c49' LIMIT 1
(0.4ms) ROLLBACK
(0.4ms) ROLLBACK
=> false
Run Code Online (Sandbox Code Playgroud)
oauth_applications 表是 100% 空的。
我正在服务器上运行它(在本地它按预期工作),如果您需要更多信息,请告诉我。
编辑:
我也试过:
$>app.save!
Run Code Online (Sandbox Code Playgroud)
并得到以下错误:
ActiveRecord::RecordInvalid: Validation failed: Redirect URI must be an HTTPS/SSL URI.
Run Code Online (Sandbox Code Playgroud)
我有一个非 https uri 的解决方案。在 doorkeeper.rb 配置文件中,您可以选择设置force_ssl_in_redirect_uri为false.
# config/initalizers/doorkeeper.rb
force_ssl_in_redirect_uri false
Run Code Online (Sandbox Code Playgroud)
事实证明这不是问题,而是设计使然:)
来自错误的以下部分:
Redirect URI must be an HTTPS/SSL URI
Run Code Online (Sandbox Code Playgroud)
看来您正在使用uri 的不安全( http, not )端点。https对于某些平台(例如 Heroku),会自动启用 HTTPS 支持,因此放入https://uri 就足够了。
对于 ElasticBeanstalk 来说,这不应该是一个非常麻烦的过程。请参阅他们的文档以开始使用。您需要从域名提供商处购买 SSL 证书,然后在 ElasticBeanstalk Web 配置中找到上传和使用证书的选项(我认为该选项可能位于负载均衡器部分)。
| 归档时间: |
|
| 查看次数: |
774 次 |
| 最近记录: |