簡體   English   中英

Devise和Omniauth-soundcloud錯誤— invalid_request:缺少必需的參數: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM