![](/img/trans.png)
[英]Google authentication error: invalid_request Missing required parameter: client_id
[英]Devise & Omniauth-soundcloud error — invalid_request: Required parameter is missing: client_id
使用Rails 4.2.2
與此問題所發生的問題非常相似: Devise和Facebook-Omniauth缺少client_id
除了這是針對omniauth-soundcloud的以外,上面的問題沒有實際答案。 選擇的答案是遵循railscast,這是我一直在首先進行的設置。 (我正在關注railscast pro#235)
我的devise.rb:
config.omniauth :soundcloud, ENV["blablabla"], ENV["blablabla"]
(顯然,blablabla是我的客戶ID和機密信息)
的Gemfile:
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初始化程序沖突,因此也不是解決方案。
弄清楚了。 只是不要遵循軌道。 請遵循以下步驟:
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' }
這應該為有此問題的任何人解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.