2014-01-12 50 views
4

我有一個聯繫人控制器,它有一個方法來連接並保存從我的帳戶在谷歌驅動器(app/models/contact.rb)從表格提交到電子表格的數據:錯誤的身份驗證錯誤Rails連接到谷歌驅動器

def update_spreadsheet 
    connection = GoogleDrive.login(ENV["GMAIL_USERNAME"], ENV["GMAIL_PASSWORD"]) 
    ss = connection.spreadsheet_by_title('Learn-Rails02-Example') 
    if ss.nil? 
     ss = connection.create_spreadsheet('Learn-Rails02-Example') 
    end 

的方法調用的環境變量我設置與保存的配置/環境/ development.rb如下費加羅:

GMAIL_USERNAME: [email protected] 
GMAIL_PASSWORD: Paxxword (obviously this is a place holder for my actual password in the .yml file) 

當我提交我的形式,我得到以下錯誤:

*GoogleDrive::AuthenticationError at /contacts 
Authentication failed for tgolsby: Response code 403 for post https://www.google.com/accounts/ClientLogin: Error=BadAuthentication* 

它指向的接觸模型下面一行:

*def update_spreadsheet* 
    **connection = GoogleDrive.login(ENV["GMAIL_USERNAME"], ENV["GMAIL_PASSWORD"])** 
    *ss = connection.spreadsheet_by_title('Learn-Rails02-Example') 
    if ss.nil? 
     ss = connection.create_spreadsheet('Learn-Rails02-Example') 
    end* 

我已經檢查和複查我的用戶名和密碼,我相信他們是在application.yml文件正確的100%。我已經閱讀了教程並重復了所有步驟,但我無法弄清楚爲什麼應用程序無法連接到Google。我還檢查了我的Google帳戶沒有設置兩步驗證。

+0

你是從你的本地機器上試過嗎?還是部署到Heroku?在本地,您可以硬編碼您的憑據,以確保您的問題不在於設置ENV變量。您正在使用「Learn Ruby on Rails」書中的代碼。您是否可以使用Gmail連接成功發送郵件(相同憑據)? –

+0

謝謝你回到我身邊丹尼爾:)是的,嘗試從本地機與webrick服務器。已經使用了「Learn Ruby on Rails」中的所有代碼,唯一的區別是我已經將項目名稱替換爲「learn-rails02」,因此在每個相關的文件中我相應地調整了名稱。郵件發送(只有當我從控制器中刪除電子表格方法,所以它不會卡住)。我在browsaer中收到通知,並且日誌說它是從Gmail地址發送的,並且有正確的電子郵件地址發送到,但沒有郵件到達我的收件箱。 – user3186432

+0

我已經重新啓動了webrick服務器,現在它似乎都能正常工作,包括郵件和電子表格。歡呼聲,Tim – user3186432

回答

2

代碼是好的(你可以根據learn-rails示例應用程序進行檢查)。它看起來很像從Learn Ruby on Rails書中的代碼。

這意味着問題是環境或配置問題的結果。

首先,你是在本地運行嗎,還是在部署到Heroku後出現問題?

如果本地運行,這裏有事情,你可以嘗試解決:

1)請嘗試重新啓動Web服務器。當您更改配置文件時,服務器必須重新啓動。

2)在代碼中替換ENV["..."]並直接使用憑證(「硬編碼憑證」)。注意不要使用硬編碼憑據將代碼檢入git倉庫(並且不要推送給GitHub,因爲您會公開憑證)。

3)您可以從應用程序發送電子郵件?註釋更新電子表格的代碼,如果您的憑證正確,您應該能夠發送電子郵件。

3

您可能遇到同樣的問題。我正在使用google_drive gem訪問我的google文檔,這是我一年以來沒有涉及的個人項目。我以前能夠通過使用session = GoogleDrive.login('[email protected]', 'password')啓用會話來訪問我的谷歌文檔,但現在得到與您一樣的錯誤。

我登錄到該帳戶使用了密碼,看見從谷歌的電子郵件的主題「受阻的跡象。」我遵循鏈接https://www.google.com/settings/security/lesssecureapps爲該帳戶啓用安全性較低的應用訪問,並且能夠使用相同的代碼在本地啓用會話。我會檢查你的谷歌帳戶,看看你是否收到電子郵件或啓用不太安全的應用程序訪問,然後再試一次。

0

我有這個問題爲好,我是能夠通過使ENV [「GMAIL_PASSWORD」]代碼在我的聯繫人模型全部大寫只是因爲它是在我的環境進行修復。它不工作時,我只在在環境變量帽的代碼,但一切的第一個字母大寫,所以一定要考慮你的環境的情況下的靈敏度。