Devise & Omniauth-soundcloud 错误——invalid_request:缺少必需的参数:client_id
Devise & Omniauth-soundcloud error -- invalid_request: Required parameter is missing: client_id
使用 Rails 4.2.2
与这个问题所发生的问题非常相似:Missing client_id with Devise and Facebook-Omniauth
除了这是针对 omniauth-soundcloud 的,上面的问题没有实际答案。选择的答案是遵循 railscast,这是我一开始就一直在做的设置。 (我正在关注 railscast pro #235)
我的devise.rb:
config.omniauth :soundcloud, ENV["blablabla"], ENV["blablabla"]
(显然 blablabla 是我的客户 ID 和密码)
宝石文件:
gem 'devise'
# gem 'omniauth'
gem 'omniauth-soundcloud', '~> 1.0.0'
# gem 'omniauth-oauth2'
(将这两个注释掉,因为网上的一些答案说注释掉它们可以解决问题,但对我来说不是这样)
我的user.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 初始值设定项发生冲突,因此这也不是解决方案。
想通了。只是不要跟随 railscast。请改为:
https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview
我的特殊问题是我需要在用户模型中声明 omniauth_providers:
devise :database_authenticatable, :registerable, :omniauthable,
:recoverable, :rememberable, :trackable, :validatable, omniauth_providers: [:soundcloud]
我还必须改变我的 devise.rb 远离 omniauth-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' }
这应该为遇到此问题的任何人解决。
使用 Rails 4.2.2
与这个问题所发生的问题非常相似:Missing client_id with Devise and Facebook-Omniauth
除了这是针对 omniauth-soundcloud 的,上面的问题没有实际答案。选择的答案是遵循 railscast,这是我一开始就一直在做的设置。 (我正在关注 railscast pro #235)
我的devise.rb:
config.omniauth :soundcloud, ENV["blablabla"], ENV["blablabla"]
(显然 blablabla 是我的客户 ID 和密码)
宝石文件:
gem 'devise'
# gem 'omniauth'
gem 'omniauth-soundcloud', '~> 1.0.0'
# gem 'omniauth-oauth2'
(将这两个注释掉,因为网上的一些答案说注释掉它们可以解决问题,但对我来说不是这样)
我的user.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 初始值设定项发生冲突,因此这也不是解决方案。
想通了。只是不要跟随 railscast。请改为:
https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview
我的特殊问题是我需要在用户模型中声明 omniauth_providers:
devise :database_authenticatable, :registerable, :omniauthable,
:recoverable, :rememberable, :trackable, :validatable, omniauth_providers: [:soundcloud]
我还必须改变我的 devise.rb 远离 omniauth-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' }
这应该为遇到此问题的任何人解决。