2011-08-17 75 views
3

我正在使用devise和omniauth的Rails 3應用程序,並遵循https://github.com/plataformatec/devise/wiki/OmniAuth%3A-Overview中給出的示例,它在Facebook帳戶中運行良好,但是當我嘗試添加Twitter身份驗證時,出現'401未經授權的迴應。爲了跟蹤這個問題,我將api.twitter.com的URL切換爲http,並拋棄了網絡流量,它看起來像是發送到/ oauth/access_token兩次。第一次獲得200響應時,第二次給出401響應。在兩者之間,它使用'GET /1/account/verify_credentials.json'方法成功獲取經過身份驗證的用戶的用戶信息。我不明白爲什麼代碼第二次調用access_token方法。設計,Omniauth和Twitter

在我的配置/初始化/ devise.rb文件我加:

config.omniauth :twitter, "consumer_key", "consumer_secret" 
除了在上述Omniauth概述頁面列出的代碼的其餘部分

我也在我的OmniauthCallbacksController加入了「嘰嘰喳喳」的方法,但它永遠不會被調用,由於401

任何幫助將非常感激。

+0

設置了這個請求,你是否在OmniauthCallbacksController中檢查了你的twitter函數?如果出現錯誤,devise會拋出無效的響應錯誤,您可以嘗試在您的控制器 – Jimchao

回答

7

嘗試在dev.twitter.com上的應用程序設置中填寫回調URL。應該是這樣的:

回調URL http://yousite.com/auth/twitter/callback

+0

中僅通過'render:text => env [「omniauth.auth」]轉儲響應,只有'http:// yousite.com'仍適用於我。 –

3

不知道你到底想通了這一點或沒有 - 但Twitter不支持localhost域。

您可以通過在/etc/hosts中設置本地別名,然後將其輸入到Twitter的回調URL中或將您的網站置於面向外的服務器上來解決此問題。

如上 - 回調應該在格式:

http://mysite/auth/twitter/callback

+4

您也可以使用http://127.0.0.1:3000/auth/twitter/callback作爲您在twitter端的回調網址。他們不允許「localhost」,但是允許127.0.0.1等效。 –

0

我遇到了同樣的問題,因爲啓用:可確定 我決定跳過確認是OAuth用戶:auth.user.skip_confirmation! 它解決了我的問題。

0

我遇到了完全相同的問題,但最終通過刪除config/initializers/omniauth.rb文件來完成此工作。由於你在config/initializers/devise.rb