Ruby on rails - Devise & Omniauth-soundcloud error -- invalid_request:缺少必需参数:client_id



使用Rails 4.2.2

与这个问题非常相似的问题:Devise和Facebook Omniauth 缺少client_id

除了这是针对omnauth soundcloud的,并且上面的问题没有实际的答案。选择的答案是遵循railscast,这就是我最初所做的设置。(我正在关注railscast pro#235)

我的设备.rb:

config.omniauth :soundcloud, ENV["blablabla"], ENV["blablabla"]

(显然blablabla是我的客户id和秘密)

Gemfile:

gem 'devise'
# gem 'omniauth'
gem 'omniauth-soundcloud', '~> 1.0.0'
# gem 'omniauth-oauth2'

我的用户.rb:

devise :database_authenticatable, :registerable, :omniauthable, 
     :recoverable, :rememberable, :trackable, :validatable

即使在URL中,我也可以看到客户端id缺失,但我在我的devise.rb文件中定义了它,如所示

https://soundcloud.com/connect?client_id=&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fusers%2Fauth%2Fsoundcloud%2Fcallback.....

我不明白为什么没有传递客户id。我错过什么了吗?我也应该在其他地方定义它吗?有一个omniauth.rb文件来定义它将与devise.rb初始值设定项冲突,所以这也不是解决方案。

想明白了。只是不要跟着铁轨走。请按照以下步骤操作:

https://github.com/plataformatec/devise/wiki/OmniAuth:-概述

我的特殊问题是,我需要在用户模型中声明omnauth_providers:

devise :database_authenticatable, :registerable, :omniauthable, 
     :recoverable, :rememberable, :trackable, :validatable, omniauth_providers: [:soundcloud]

我还不得不将我的devise.rb从omnauth soundcloud的建议中更改为:

config.omniauth :soundcloud, ENV["SOUNDCLOUD_CLIENT_ID"], ENV["SOUNDCLOUD_CLIENT_SECRET"]

到此:

config.omniauth :soundcloud, "SOUNDCLOUD_CLIENT_ID", "SOUNDCLOUD_CLIENT_SECRET", client_options: { redirect_uri: '/users/auth/soundcloud/callback' }

这应该可以为任何有此问题的人修复它。

最新更新