2014-07-17 60 views
1

使用Linkedin gem時出現了一個尷尬的問題。Production Linkedin Oauth

我的應用程序嘗試使用oauth獲取用戶數據。在開發環境中,它工作得很好。但只要我把它上傳到Heroku的它開始給我像錯誤:

2014-07-17T04:25:07.552779+00:00 app[web.1]: NoMethodError (undefined method `picture_urls' for #<LinkedIn::Client:0x007f4f4cea65f8>): 
2014-07-17T04:25:07.552783+00:00 app[web.1]: app/models/social_auth.rb:7:in `fetch_details' 

真正的問題在於,它用來工作和無處停止。我甚至對我的git倉庫進行了回滾,以查看過去的代碼是否正在運行,但沒有運行。

它似乎甚至沒有正確回答我,甚至給出了正確的回調(我確定錯誤發生在oauth驗證後)。

檢查定義的完整代碼(即模型保存後執行):

def fetch_details_from_linkedin 
    client = LinkedIn::Client.new(ENV["LINKEDIN_KEY"], ENV["LINKEDIN_SECRET"]) 
    authkeys = [self.token, self.secret] 
    client.authorize_from_access(authkeys) 

    @linkedin = LinkedinUserData.where(user: self.user).first_or_initialize 
    @linkedin.avatar_url = client.picture_urls.all.first 
    @linkedin.profile_url = client.profile.site_standard_profile_request.url 

    @linkedin.save 
end 

每個項目在這種模式有用來驗證用「authorize_from_access」的方法,用戶令牌和祕密。我不知道爲什麼,但似乎這個回調正在回答我一個空洞的對象。

我已經考慮過的事情: API上的實時狀態 - CHecked。無論LinkedIn api上的應用程序狀態如何,它都會給出錯誤

回調URL:已經檢查過,即使使用https。正如我所說,回調正在執行。該錯誤是一個內部錯誤(500)。

回答

0

我剛剛聯繫了gem的開發者,我們一起發現,即使沒有指定版本,由於某種原因,heroku因爲github已經在0.4.7上而獲得了舊版本的gem,並且它得到了0.2。 X。

所以,我通過指定寶石版本解決了這個問題。不知道在heroku上發生了什麼,但至少問題解決了,並且linkedin再次授權。

gem 'linkedin', '0.4.7' 

PS:如果你得到一個相關性錯誤,只是聲明在你的寶石文件:

gem 'hashie', '2.0' 

這是因爲一個ominiauth依賴。