当前位置: 首页 > 知识库问答 >
问题:

Google drive api服务帐户使用java查看上传到Google drive的文件

井轶
2023-03-14

我已经创建了代码,使用java中的服务帐户将文件插入到google drive。文件已上传至google drive,但我无法使用网络浏览器查看。当我使用代码检查文件时,我可以检索上传的文件。我的问题是,如何使用java中的google services帐户将文件上传到google drive,以便通过网络浏览器查看

请在下面找到示例代码。

      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);
          }

共有2个答案

柴星津
2023-03-14
    < li >转到您的Google Drive。创建一些文件夹,并打开“共享设置”。 < li >将您的服务电子邮件添加到允许用户列表,并允许其编辑该文件夹的内容。 < li >记住文件夹id并在上传文件时使用此文件夹ID。 < li >它将被上传到您的个人google drive帐户中。
姚培
2023-03-14

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

Permission newPermission = new Permission();
newPermission.setValue("...your regular username...@gmail.com");
newPermission.setType("user");
newPermission.setRole("reader");
service.permissions().insert(file.getId(), newPermission).execute();

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

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

类型和角色的可能值在Google Drive SDK文档中:https://developers.google.com/drive/v2/reference/permissions/insert

 类似资料:
  • 问题内容: 我已创建代码以使用Java中的服务帐户将文件插入到Google驱动器中。文件已上传到Google驱动器中,但我无法使用网络浏览器看到它。当我使用代码检查文件时,我可以检索上载的文件。我的问题是我将文件上传到Google驱动器,可以使用Java中的Google Services帐户通过网络浏览器查看文件 请在下面找到示例代码。 问题答案: 如果您设置了文件权限,则可以在常规的gmail帐

  • 我正在构建一个功能,将文件从我的web应用程序上传到我的客户google drive。我不希望应用程序对用户进行身份验证。谁曾经上传过我文件中的任何文件?我想上传到我客户的谷歌硬盘。 我假设服务帐户是用于此目的的帐户。我说得对吗? 当我使用以下代码上传文件时,它会成功上传,但在“我的驱动器”下不可见。然后我添加了一个权限,基本上与我的gmail帐户共享该文件。然后它在“与我共享”部分可见。 我希望

  • 是否可以使用server1将文件上传到server2? 访客请访问:我的网站。com(server1) 然后他将一个文件上传到server1,server1会自动将该文件上传到server2?? 或者简单地说,用户可以使用server1作为代理将文件上传到server2,因为server2只能从server1访问 会有帮助吗,还是有其他更好的解决方案?

  • 编写一个应用程序,该应用程序将抓取用户上传的打包zip文件的上传目录,并在Google for Work共享的Google Drive文件夹中重新创建压缩目录结构。 问题:共享文件夹对在工作域中创建的服务号不可访问或不可见。代码在C#中。我希望我只是错过了一些愚蠢的东西。 详细信息:以域管理员帐户登录。进入谷歌api控制台,启用api,创建一个服务帐户,授权访问该服务帐户的电子邮件。通过API和服

  • 我有一个将文件上传到服务器的api。我需要让iphone成为一个将文件从dropbox传输到服务器的应用程序。 我的问题是,我是否需要将文件从dropbox/box帐户下载到iphone,然后使用api上传到我的服务器? 或者我可以跳过将文件下载到设备并直接从dropbox/box帐户上传到自定义服务器的过程吗? 或者可以选择在iphone和dropbox之间只同步少数文件,然后将文件的本地副本上