2013-08-27 67 views
1

我試圖用Reddit實現oAuth使用Devise & omniauth-reddit gem。Reddit API的redirect_uri參數無效

它似乎是通過本地url & API密鑰罰款。

https://ssl.reddit.com/api/v1/authorize?response_type=account&client_id=API_KEY&redirect_uri=http%3A%2F%2F127.0.0.1%3A3000%2Fusers%2Fauth%2Freddit%2Fcallback&scope=identity 

但是我得到的迴應是:

forbidden (reddit.com) 

you are not allowed to do that 
— invalid redirect_uri parameter. 

我已經嘗試設置REDIRECT_URI到127.0.0.1:3000以及託管URL(Heroku的),但無濟於事。

所以現在我不明白,如果我仍然只是給他們錯誤的URL或傳遞一個不應該在那裏的參數。

感謝您的幫助!

回答

1

OAuth服務器(幾乎總是)要求您使用它們註冊回調地址。你做到了嗎?他們檢查您在redirect_uri中發送的內容是否與您輸入的內容相符。在reddit的:

只是測試它。你必須輸入準確的回調URL:

http://127.0.0.1:3000/users/auth/reddit/callback

如果你錯過了一個段,它會報告錯誤。

+0

當然,正如我在提問時指出,I've試過REDIRECT_URI設置既http://127.0.0.1:3000&http://projectx.com –

+0

對不起,是不是明確。您是否嘗試過使用完全限定的網址?尾隨斜線?有時服務器對比較挑剔。 –

+0

+1注意到網站redirecr uri必須匹配正在發送的內容。我完全發送我的新uri,但忘記更新reddit上的偏好。 –

4

好的。所以,我只是想出了一個刺激性有趣的小怪癖與reddit的API:

事實證明,如果有一個無效的client ID也返回— invalid redirect_uri parameter錯誤!很顯然,我認爲client_id是同樣的事情secret

NOPE

相反,它是容易錯過的ID是正確下方的應用程序名稱。一旦你使用正確的ID,一切正常。 。 。

counter-intuitive

+0

注意:如果您曾將「祕密」用作ID,則您的祕密可能不再是祕密,您應該創建一個新的OAuth2客戶端以生成新的ID和祕密。 – kemitche

相關問題