门卫申请不保存

Doorkeeper Application not saving

我让 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

oauth_applications table 是 100% 空的。

我在服务器上运行这个(在本地它按预期工作),如果您需要更多信息,请告诉我。

编辑:

我也试过:

$>app.save!    

并得到以下错误:

ActiveRecord::RecordInvalid: Validation failed: Redirect URI must be an HTTPS/SSL URI.

我有一个针对非 https uri 的解决方案。在 doorkeeper.rb 配置文件中,您可以选择将 force_ssl_in_redirect_uri 设置为 false

# config/initalizers/doorkeeper.rb

force_ssl_in_redirect_uri false

原来这不是问题,而是设计使然:)

来自错误的以下部分:

Redirect URI must be an HTTPS/SSL URI

您似乎正在为 uri 使用不安全的(http,而不是 https)端点。对于某些平台(如 Heroku),自动启用 HTTPS 支持,因此在 uri 中放置 https:// 就足够了。

对于 ElasticBeanstalk,这应该不是一个非常繁琐的过程。请参阅 their docs 以开始使用。您需要从域名提供商处购买 SSL 证书,然后在 ElasticBeanstalk Web 配置中找到上传和使用证书的选项(我认为该选项可能位于负载均衡器部分)。