Google drive api服务帐户视图使用java将文件上载到Google drive

Google drive api服务帐户视图使用java将文件上载到Google drive,java,oauth-2.0,google-drive-api,Java,Oauth 2.0,Google Drive Api,我已创建代码,使用java中的服务帐户将文件插入google drive。文件已上载到google drive,但我无法使用web浏览器查看它。当我使用代码检查文件时,我可以检索上载的文件。我的问题是如何将文件上载到google drive,这些文件可以使用中的google services帐户通过web浏览器查看爪哇 请在下面找到示例代码 public class PlusServiceAccountSample { private static final

我已创建代码,使用java中的服务帐户将文件插入google drive。文件已上载到google drive,但我无法使用web浏览器查看它。当我使用代码检查文件时,我可以检索上载的文件。我的问题是如何将文件上载到google drive,这些文件可以使用中的google services帐户通过web浏览器查看爪哇

请在下面找到示例代码

      public class PlusServiceAccountSample {


          private static final String APPLICATION_NAME = "";

          /** E-mail address of the service account. */
          private static final String SERVICE_ACCOUNT_EMAIL = "XXXXXXXX@developer.gserviceaccount.com" ;

          /** Global instance of the HTTP transport. */
          private static HttpTransport httpTransport;

          /** Global instance of the JSON factory. */
          private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();


          public static void main(String[] args) {
            try {
              try {
                httpTransport = GoogleNetHttpTransport.newTrustedTransport();
                // check for valid setup
                if (SERVICE_ACCOUNT_EMAIL.startsWith("Enter ")) {
                  System.err.println(SERVICE_ACCOUNT_EMAIL);
                  System.exit(1);
                }
                String p12Content = Files.readFirstLine(new File("XXXXX-privatekey.p12"), Charset.defaultCharset());
                if (p12Content.startsWith("Please")) {
                  System.err.println(p12Content);
                  System.exit(1);
                }
                // service account credential (uncomment setServiceAccountUser for domain-wide delegation)
                GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport)
                    .setJsonFactory(JSON_FACTORY)
                    .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
                    .setServiceAccountScopes(Collections.singleton(DriveScopes.DRIVE))
                    .setServiceAccountPrivateKeyFromP12File(new File("XXXXXXXX-privatekey.p12"))

                    .build();


                Drive service = new Drive.Builder(httpTransport, JSON_FACTORY,credential).build();

                com.google.api.services.drive.model.File  file = new com.google.api.services.drive.model.File();
                file.setTitle("testdd");
                file.setMimeType("application/vnd.google-apps.spreadsheet");
                Drive.Files.Insert insert = null;
                try {
                    insert = service.files().insert(file);
                    file = insert.execute();


                } catch (Exception e) {
                    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                }

                com.google.api.services.drive.model.File uploadedDoc = service.files().get("1ZJnkgFXAiUNSBeq3DmhHGqXn7-v37vLg1UsRekRQNjU").execute();

                System.out.println("Title: " + uploadedDoc.getTitle());




                return;
              } catch (IOException e) {
                System.err.println(e.getMessage());
              }
            } catch (Throwable t) {
              t.printStackTrace();
            }
            System.exit(1);
          }

如果您为该文件设置了权限,则可以在您的常规gmail帐户(“与我共享”部分)中看到该文件:

您还可以使用唯一url访问文件:

System.out.println("Title: " + uploadedDoc.getTitle()+ " "+ uploadedDoc.getAlternateLink());
类型和角色的可能值在Google Drive SDK文档中:

  • 去你的谷歌驱动器。创建一些文件夹,然后打开“共享” 它的“设置”
  • 将您的服务电子邮件添加到允许的用户列表中,并允许其 编辑该文件夹的内容
  • 请记住某个文件夹ID,并在上载时使用此文件夹ID 档案
  • 它将上传到您的个人谷歌驱动器帐户

  • 谢谢。我可以在“与我共享”部分看到上传的文件。我们是否可以使用谷歌服务帐户直接将文件上传到驱动器。Well说:服务帐户是与服务或项目相关的帐户。它们不属于用户,只能通过相关应用程序以编程方式访问。谢谢。我们有没有办法直接将文件上载到google drive而无需用户交互
    System.out.println("Title: " + uploadedDoc.getTitle()+ " "+ uploadedDoc.getAlternateLink());