2016-06-14 60 views
2

我試圖使用Google雲端硬盤同步某些媒體文件(視頻/圖片)並在我的Android應用中顯示它們。Android Google Drive Rest API:跳過許可屏幕(硬編碼帳戶)

我已經成功地使這一切工作正常,但根據的文檔(或從第一讀取至少)它看起來像有必須始終保持在同意畫面當用戶選擇了谷歌後帳戶,同意應用程序從他的驅動器獲取數據。

問題是我想'硬編碼'一個帳戶編程方式同意,因爲我們的應用程序總是要採取同一個帳戶的媒體。

這可能嗎?

PD:不建議任何其他存儲服務,Drive是客戶的要求。

回答

0

最後,我已經成功地使它完全工作:

  1. 從您的谷歌開發者控制檯創建服務帳戶憑據
  2. 以json格式下載您的憑證。
  3. 將該文件複製到assets/res/raw
  4. 將你的json重命名爲沒有奇怪字符的東西(例如:driveserviceprivatekey.json)。
  5. 列表項

    InputStream privateJsonStream = dashboardActivity.getResources().openRawResource(R.raw.driveserviceprivatekey); 
        GoogleCredential serviceCredential = GoogleCredential.fromStream(privateJsonStream).createScoped(Arrays.asList(SCOPES)); 
    
  6. 現在你可以使用你的驅動器的服務如下:

      HttpTransport transport = AndroidHttp.newCompatibleTransport(); 
          JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); 
          this.mService = new com.google.api.services.drive.Drive.Builder(
         transport, jsonFactory, null) 
         .setHttpRequestInitializer(credential) 
         .build(); 
    
2

爲避免用戶同意,您可以使用Service Account

在鏈接中指出,Google API(如Prediction API和Google雲端存儲)可以代表您的應用程序而不訪問用戶信息。在這些情況下,您的應用程序需要向API證明自己的身份,但沒有用戶同意是必要的。同樣,在企業場景中,您的應用程序可以請求對某些資源進行委託訪問。

對於這些類型的服務器到服務器交互,您需要一個service account,這是一個屬於您的應用程序而不是單個最終用戶的帳戶。您的應用程序代表服務帳戶調用Google API,並且用戶同意不是必需的。 (在非服務帳戶情況下,您的應用程序代表最終用戶調用Google API,並且有時需要用戶同意。)

您也可以檢查此相關的SO問題以獲取更多信息。

相關問題