2013-02-25 15 views
3

在谷歌文檔的OAuth2,與身份驗證令牌建設GoogleCredential這裏描述:GoogleCredential不會建立一個沒有GoogleCredential.Builder

Credential and Credential Store

特別是此代碼段是提供:

GoogleCredential credential = new GoogleCredential().setAccessToken(accessToken); 
Plus plus = Plus.builder(new NetHttpTransport(), new JacksonFactory()) 
    .setApplicationName("Google-PlusSample/1.0") 
    .setHttpRequestInitializer(credential) 
    .build() 

當我嘗試建立這樣一個GoogleCredential我簡潔地告知:

Please use the Builder and call setJsonFactory, setTransport and setClientSecrets 

在異常的消息字段中。我上週下載了這些庫,所以我不確定發生了什麼。文檔是否過時,如果是這樣,那麼用什麼方法取代現有的認證令牌和刷新令牌是最佳做法?

順便說一句,使用Builder的原因並不是一個選項,因爲Google應用程序控制臺沒有提供客戶端密鑰;它表示,他們不再提供Android應用程序等。因此,setClientSecrets(...)不能被調用。

+0

你弄明白了嗎?我有同樣的問題。 – 2014-06-26 17:45:38

+0

我們從未做過。我們最終將文檔放在用戶控制的谷歌驅動器中,然後用純機器控制的谷歌驅動器共享它們,這給了我們相同的有效控制。 – 2014-06-30 11:58:03

+0

那麼它在某種程度上對我有效..將張貼作爲一個答案..顯然現在不會對你有任何幫助..但對於像我這樣的其他觀衆.. :) – 2014-06-30 14:24:12

回答

-3

檢查谷歌驅動器SDK文檔中的Android的快速啓動示例的一步一步的說明正確安裝GoogleCredential

https://developers.google.com/drive/quickstart-android

+0

使用'GoogleAccountCredential',這是用於手機上用戶帳戶的。我想使用常規雲端硬盤創建一個應用管理帳戶,如下所述:https://developers.google.com/drive/service-accounts#use_regular_google_accounts_as_application-owned_accounts我有一個身份驗證令牌和一個刷新令牌,現在有從他們那裏製造'Credential'麻煩。 – 2013-02-26 09:35:14

+0

實際上'GoogleCredential'並沒有出現在那個頁面*上,只是'GoogleAccountCredential'。 – 2013-02-26 11:18:16

+0

然後,您可以檢查Java快速入門:https://developers.google.com/drive/quickstart-java – 2013-02-26 17:39:36

0

最近我遇到了這個問題,並想出我的情況的解決方案。

以下是運行條件:程序在Android 4.0上運行,並且不使用Google Drive SDK,因爲它無法讓我們的程序讀取Google Drive上未由我們的程序創建的文件。我使用com.google.api.services.drive。*和com.google.api.client.googleapis.auth.oauth2。* Java庫。

代碼出現這個問題,是象下面這樣:

GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
     httpTransport, jsonFactory, CLIENT_ID, CLIENT_SECRET, Arrays.asList(DriveScopes.DRIVE)) 
    .setAccessType("offline") 
    .setApprovalPrompt("auto").build(); 


GoogleTokenResponse response = null; 
try { 
    response = flow.newTokenRequest(authorizationCode).setRedirectUri(REDIRECT_URI).execute(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

GoogleCredential credential = new GoogleCredential().setFromTokenResponse(response); 

但上面的代碼中運作良好,如果參數setAccessType(「在線」);

並且此問題的解決方案取決於所需的訪問類型。

如果你想要「onLine」作爲accessType,那麼使用setFromTokenResponse()應該沒問題。

,如果你想「離線」的存取類型,那麼你需要使用的打擊代碼:

GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport) 
     .setJsonFactory(jsonFactory) 
     .setClientSecrets(CLIENT_ID, CLIENT_SECRET) 
     .build() 
     .setFromTokenResponse(response); 

有一點需要提及的是,你需要不斷的存取類型設置爲GoogleTokenResponse一致, GoogleAuthorizationCodeFlow創建。

0

您需要在Google Dev Console中設置您的Android應用程序密鑰。

  1. 選擇你的項目,選擇API &驗證,然後單擊憑據
  2. 創建新的客戶端ID(儘管它有其他的客戶端ID)
  3. 選擇安裝的應用程序 - > Android的
  4. 填寫您的包名和SHA1正確
  5. 創建新的密鑰(儘管它有其他客戶端密鑰)
  6. 選擇Android的關鍵
  7. 填寫的SHA1,p ackageNameName是這樣的:45:B5:E4:6F:36:AD:0A:98:94:B4:02:66:2B:12:17:F2:56:26:A0:E0;com.example

您的問題將自動解決。確保使用調試密鑰庫和發行密鑰庫創建客戶端ID和密鑰。

相關問題