2017-07-31 70 views
0

我試圖實現Android的Drive API以將文件備份到AppFolder。我正在使用Using the Google APIS Client Library for Java to integrate with Drive on Android上的教程,並使用Quickstart中的一些代碼片段。Google Drive API Android:卡在登錄

  • 當用戶打開帶有驅動API調用(如在this Activity from the Quickstart活動中,.connect()調用是不成功的,錯誤代碼SIGN_IN_REQUIRED,這似乎是合乎邏輯的我。
  • 我再繼續登錄到我的谷歌賬戶,登錄看起來succesfull。
  • 活動得到恢復。由於從快速啓動鏈接的活動文件,該onResume方法再次調用.connect()
  • .connect()調用失敗,相同的錯誤代碼(SIGN_IN_REQUIRED)和過程repea TS。

在Google Developer Console的API管理器中,我爲此應用程序創建了一個項目。在該項目中,我爲應用程序創建了一個「OAuth 2.0客戶端ID」,其中包含調試包名稱和用於調試密鑰的SHA-1。在快速入門的清單中,我沒有看到任何地方使用的所述憑證的客戶端ID。

這是一個已知問題還是我在某處犯了一個錯誤?

編輯:

我原建快速入門從無到有,錯誤仍時有發生。因此,這可能是API控制檯的問題,而不是客戶端問題。

  • 我已經爲應用程序創建了一個項目。
  • 我已啓用Drive API和Google+ API。
  • 我已經創建了一個「API密鑰」憑證,其中包含我的應用程序的軟件包名稱和我的調試簽名密鑰的SHA-1。
+0

你有重寫onConnectionFailed()? – Mani

+0

是的。它與本教程幾乎相同,只需調用connectionResult.startResolutionForResult(this,RESOLVE_CONNECTION_REQUEST_CODE);'。該呼叫已到達(用斷點檢查)。 – mDroidd

+0

我已經構建了快速啓動而不更改任何內容,問題仍然存在。看來我在API控制檯中做錯了什麼。 OP編輯。 – mDroidd

回答

0

不是解決我所期待的,但在這裏它是:

原來的Android工作室是不是我的簽名與位於~/.android/debug.keystore調試關鍵應用程序,但使用不同的密鑰。

不知道它是哪個鍵,我能夠使用this SO question中描述的方法計算出它的SHA-1。

0

這是因爲您沒有生成正確的apk與正確的SHA1密鑰或包名稱,需要在Google API控制檯中註冊。來自[Google android-quickstart]的代碼是100%正確的。 onResume方法再次調用.connect()是由於您的SHA1密鑰或包名稱與API控制檯不匹配。

爲了解決這個問題: (1)您應首先生成SHA1爲您的應用程序。如果您使用的是Android的工作室和開發應用程序,請按照this讓你的應用程序的默認SHA1。 [請記住不要使用live sha1鍵,否則在登錄時會卡住!]
(2)請按照this的說明使用默認的sha1創建您的OAuth客戶端ID。 (3)再次運行[Google android-quickstart]。

*注意:您不必將任何API客戶端ID複製到您的清單或活動中,因爲您應該成功地在API控制檯中使用指定的軟件包名稱和Sha1鍵註冊您的應用程序,以便Google可以檢測這些東西自動啓動時應用程序。

0

this項目的參考只是刪除以下行,然後onResume()不是一次又一次

打電話試試這個:

@Override 
protected void onPause() { 
    if (mGoogleApiClient != null) { 
     mGoogleApiClient.disconnect(); 
    } 
    super.onPause(); 
}