门卫密码授予URI :: InvalidURIError:查询与opaque冲突

时间:2016-03-04 19:47:02

标签: ruby-on-rails devise doorkeeper

Rails,Devise和Doorkeeper ...尝试测试密码授予和获取错误:URI::InvalidURIError: query conflicts with opaque有任何想法吗?

更新:我创建了第二个能够获得令牌的rails应用程序..所以也许是关于native_redirect_uri的东西

Doorkeeper.configure do
  orm :active_record

  resource_owner_authenticator do
      # current_user || warden.authenticate!(:scope => :user)
  end

  resource_owner_from_credentials do |routes|
    user = User.find_for_database_authentication(email: params[:username])
    user if user && user.valid_password?(params[:password])
  end


  reuse_access_token

  use_refresh_token

  native_redirect_uri 'urn:ietf:wg:oauth:2.0:oob'

  grant_flows %w(password)


  skip_authorization do |resource_owner, client|
    true
  end

end

使用oauth2我创建一个应用程序,给它一个随机名称,并为网站uri:urn:ietf:wg:oauth:2.0:oob

然后使用用户的凭据运行以下命令:

client = OAuth2::Client.new('caa5ia541111698b34e66056e18b9afd6cb90c0d200d5dac99584da5a6b83b411', 'e45c78992a9eeb609b72cf5b56aea8dd999ec7dc9594a4211b8265f525a75870', :site => "urn:ietf:wg:oauth:2.0:oob")
access_token = client.password.get_token('test@test.com', 'realpassword')

我大致遵循此示例here

2 个答案:

答案 0 :(得分:18)

我自己遇到了这个错误并且非常困惑,因为这是一个非常神秘的错误concerning internals of the URI library。我的问题是我加入的第一个字符串没有指定协议(https://http://)。添加一个解决了我的问题!

答案 1 :(得分:0)

对于任何人的价值,我认为我误用了“urn:ietf:wg:oauth:2.0:oob”。我设置了一个单独的rails应用程序作为客户端,一切都按预期工作。