如何使用谷歌硬碟SDK与硬编码的凭据的Android项目如何使用谷歌硬碟SDK与硬编码的凭据的And

2019-05-12 06:11发布

我怎么能硬编码凭证到我的谷歌云端硬盘服务,因此该应用的用户总是会得到ACCES我的文件没有权威性?

我已经发现使用Java SKD解决方案,但这些库不与Android效果很好, https://developers.google.com/drive/service-accounts#use_service_accounts_as_application-owned_accounts

是否有类似的任务成功尝试的任何例子吗?

Answer 1:

好吧,我发现我的问题的解决方案。

当然,我的应用程序是一个Android的一个,我想dont'n让用户登录/使用任何凭据连接到我的硬盘,最后我可以使用默认的驱动器的Web应用程序操作文件。

  1. SEPS需要采取:创建服务帐户在这个例子。
  2. 下载私钥API访问网站 ,并把它放在如。 在资产的文件夹。
  3. 下载并导入这些库:
    • 谷歌的API客户端-1.13.2-beta.jar
    • 谷歌的API客户端,Android的1.13.2-beta.jar
    • 谷歌的API服务驱动-V2-rev60-1.13.2-beta.jar
    • 谷歌-HTTP的客户端1.13.1-beta.jar
    • 谷歌-HTTP的客户端Android的1.13.1-beta.jar
    • 谷歌-HTTP的客户GSON-1.13.1-beta.jar
    • 谷歌-HTTP的客户jackson2-1.13.1-beta.jar
    • 谷歌-OAuth的客户端1.13.1-beta.jar
    • GSON-2.1.jar
    • 番石榴jdk5-13.0.jar
    • 杰克逊核心2.0.5.jar
    • jsr305-1.3.9.jar
  4. 实现驱动服务的getter:

     public Drive getDriveService() throws GeneralSecurityException, IOException, URISyntaxException { HttpTransport httpTransport = new NetHttpTransport(); JacksonFactory jsonFactory = new JacksonFactory(); GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(jsonFactory) .setServiceAccountId(G_SERVICE_EMAIL) .setServiceAccountScopes(DriveScopes.DRIVE) .setServiceAccountPrivateKeyFromP12File(PKC_12_FILE) .build(); Drive service = new Drive.Builder(httpTransport, jsonFactory, null) .setHttpRequestInitializer(credential) .build(); return service; } 

    其中G_SERVICE_EMAILAPI访问网站的电子邮件地址和PKC_12_FILE是以前下载的私钥。

  5. 允许您服务,您的驱动器访问文件夹:在该文件夹的共享选项硬盘应用允许与电子邮件用户:G_SERVICE_EMAIL读/写访问。

    PKC文件集成

     private File getTempPkc12File() throws IOException { InputStream pkc12Stream = getAssets().open("this-is-your-unique-hash-privatekey.p12"); File tempPkc12File = File.createTempFile("temp_pkc12_file", "p12"); OutputStream tempFileStream = new FileOutputStream(tempPkc12File); int read = 0; byte[] bytes = new byte[1024]; while ((read = pkc12Stream.read(bytes)) != -1) { tempFileStream.write(bytes, 0, read); } return tempPkc12File; } 


Answer 2:

你可能不希望这样做。 如果你有一个访问令牌,你可以随时添加它作为一个URL参数access_token=MY_ACCESS_TOKEN请求URL。



文章来源: How to use Google Drive SDK in Android project with hardcoded credentials