- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序中,当用户单击我的应用程序中表单上的链接时,我尝试强制从 Google 团队云端硬盘下载文件。
一些更新:
我有可以上传到团队云端硬盘以及在团队云端硬盘上创建文件夹的代码。
“团队云端硬盘支持 - 此应用程序可以正常处理团队云端硬盘中的文件。”在 Google Drive API 设置上无法启用 - 我可以选中此框,但无法单击“保存更改”按钮,因为该按钮始终处于禁用状态。不过,我认为这不是问题,因为我可以在代码中与团队云端硬盘进行交互。
我已经阅读了 Google 文档,内容非常有限:
https://developers.google.com/drive/v3/web/manage-downloads
https://developers.google.com/drive/v3/reference/files/get
我还阅读了一些帖子:
Download files from google drive using java API
但是,我找不到有效的答案。我构建了一些使用服务帐户的代码。该代码设置驱动器服务并使用服务帐户作为凭据。我的代码下载部分来自此 Google 文档示例:
https://developers.google.com/drive/v3/web/manage-downloads#examples
这是我正在使用的代码:
public static void downloadFile(String fileID) {
// Set the drive service...
Drive service = null;
try {
service = getDriveService();
} catch (IOException e) {
e.printStackTrace();
}
OutputStream outputStream = new ByteArrayOutputStream();
try {
service.files().get(fileID).executeMediaAndDownloadTo(outputStream);
// NEED CODE HERE???????
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* Build and return an authorized Drive client service.
*
* @return an authorized Drive client service
* @throws IOException
*/
public static Drive getDriveService() throws IOException {
Logger.info("GoogleDrive: getDriveService: Starting...");
GoogleCredential credential = null;
Drive googleDrive = null;
try {
credential = authorize();
Logger.info("GoogleDrive: getDriveService: Credentials set...");
googleDrive = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
.setApplicationName(APPLICATION_NAME).build();
} catch (IOException ex) {
System.out.println(ex.toString());
ex.printStackTrace();
}
return googleDrive;
}
/**
* Creates an authorized Credential object.
*
* @return an authorized Credential object.
* @throws IOException
*/
@SuppressWarnings("deprecation")
public static GoogleCredential authorize() throws IOException {
GoogleCredential credential = null;
String credentialsFileName = "";
try {
Logger.info("GoogleDrive: authorize: Starting...");
Logger.info("GoogleDrive: authorize: Getting credentialsFileName path...");
credentialsFileName = Configuration.root().getString("google.drive.credentials.file");
Logger.info("GoogleDrive: authorize: credentialsFileName = " + credentialsFileName);
Logger.info("GoogleDrive: authorize: Setting InputStream...");
InputStream in = GoogleDrive.class.getClassLoader().getResourceAsStream(credentialsFileName);
if (in == null) {
Logger.info("GoogleDrive: authorize: InputStream is null");
}
Logger.info("GoogleDrive: authorize: InputStream set...");
Logger.info("GoogleDrive: authorize: Setting credential...");
credential = GoogleCredential.fromStream(in, HTTP_TRANSPORT, JSON_FACTORY)
.createScoped(Collections.singleton(DriveScopes.DRIVE));
} catch (IOException ex) {
System.out.println(ex.toString());
System.out.println("Could not find file " + credentialsFileName);
ex.printStackTrace();
}
Logger.info("GoogleDrive: authorize: Ending...");
return credential;
}
当我的代码运行时,没有错误,也没有任何反应。我猜我在 downloadFile 函数中缺少一些代码。如果我在编码中遗漏了某些内容或不正确,请随时提供示例或我应该使用的正确代码。
非常感谢您的帮助。
最佳答案
此演示不使用服务帐户。
我只是要演示如何下载团队驱动器文件,希望它能让您深入了解您的项目。
代码的基础取自Drive API Java Quickstart :
public static void main(String... args) throws IOException, GeneralSecurityException {
// Build a new authorized API client service.
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
Drive service = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
.setApplicationName(APPLICATION_NAME)
.build();
//this is what you're looking for - a way to download a file using 'webContentLink'
try {
Desktop desktop = java.awt.Desktop.getDesktop();
//place your webContentLink in the oURL variable
URI oURL = new URI("https://drive.google.com/a/google.com/uc?id=YOUR_FILE_ID&export=download");
desktop.browse(oURL);
} catch (Exception e) {
e.printStackTrace();
}
}
执行后,该程序将打开一个空白浏览器窗口并将文件下载到您的计算机。
我生成webContentLink
的方式只是使用Files.get Try-it并确保我将 supportsTeamDrives
设置为 true
,并将 fields
参数设置为 webContentLink
,以便它返回该值。
当然,您始终可以以编程方式使用 Java files.get
来获取 webContentLink
,但使用 Try-it 获取 webContentLink
更容易用于测试目的。
关于java - 如何使用 Java 中的 Google Drive API 库强制从 Google Team Drive 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49071968/
无法将应用程序添加到 Teams 管理员中的自定义策略。 在新海关政策中添加新应用程序后。单击保存按钮时,出现错误显示“我们现在无法保存应用程序设置策略。请重试。如果问题仍然存在,请联系 Micros
我想创建一个应用程序,当用户在 MS Teams 中接到电话时会收到通知。我的意思是我想在来电事件上订阅一些东西,然后根据来电信息做一些事情。这可能吗?到目前为止,我在 SDK 中没有看到任何事件。
这个问题在这里已经有了答案: jQuery validate dynamic input array (2 个答案) jQuery Validate array input element whic
未在从 MS Teams 返回的事件对象中获取时区... 我能够从 MS Teams 上发布的用户消息中获取事件对象,但时区为 null。我需要确定用户。 下面是事件对象。 Activity Obje
我有一个简单的 web 应用程序,我在 Teams 中显示为一个应用程序。我已经在 App Studio 中进行了设置,一切都按我的预期工作,一切都很好。它正在显示我的网络应用程序,这就是我想要的。
从 Flow 向 Microsoft Teams 发布自适应卡片时,该消息似乎被压缩到大约 50% 的宽度。它不会扩展以适应 Teams 中的消息容器。 Squished Adaptive Card
如何在 Microsoft Teams 中恢复已删除的团队?似乎没有相应的选项可以做到这一点? 出于某种原因,我删除了某个团队,由于团队尚不存在,因此我无法使用“管理团队”之类的选项。 最佳答案 因为
如果在 Microsoft Teams 中运行,我有一个需要执行特定代码的 Web 应用程序,但是我还没有弄清楚是否有任何方法可以判断您的应用程序是否在团队中运行。有什么想法或见解吗? 编辑: 对于任
有什么方法可以通过深层链接与 ms-teams 中的机器人开始对话吗? 我已经在 https://docs.microsoft.com/en-us/microsoftteams/platform/co
我将来在 MS Outlook 中设置了外出 session 提醒,现在我的 MS Teams 显示外出。 我检查了我的 MS Outlook 中的设置,并尝试手动更改我在 MS Teams 中的状态
我在办公室工作,我们有大量文件存储在 SharePoint、OneDrive 等中,我可以轻松连接到 Microsoft Teams,但也有很多文件存储在网络共享中,路径如\\xxxx\xxxx\xx
虽然有很多关于如何向团队添加选项卡的文档,但我似乎找不到任何关于如何创建和驱动用户访问选项卡内容(如 T-Bot 中演示的内容)的文档。 谁能告诉我有关如何向机器人添加标签的任何文档? 这就是我要说的
我们正在尝试使用 Teams、Flow 和 Assembla 创建审批工作流,但遇到了一些麻烦。 我们已经成功设置了一些部分,但是我们无法从 Teams 中的卡启动 POST 操作。 在团队中,我们可
已发布here我正在寻找一种方法来设置当前用户在 Teams 中的状态,就像我使用 Lync SDK 为 Skype for Business 所做的那样。 是否有适用于 Teams 的类似 SDK,
我试图从传入的 webhook 中提及用户。 我通过 postman 尝试了几次迭代 { "text": "test @user" } 或者 { "text": "test @user@email.c
我们公司几个月前开始使用 Microsoft Teams。我的一位同事离开了公司。如果我禁用/删除他的 AAD 帐户会怎样?我们希望他在 Teams channel 中发送的消息能够被保留。 最佳答案
我想知道是否有人尝试在 TS 和 SVN/CC 之间迁移。 我所说的迁移是指在不丢失历史记录的情况下在源代码控制系统之间导入和导出存储库。 迁移到 VSTS 和从 VSTS 迁移的工具有多好? 我也有
当我尝试连接到 tfs 时,出现以下错误: --------------------------- Microsoft Visual Studio --------------------------
我们在机器人框架上创建了一个机器人,并为 Microsoft Teams channel 启用。在 bot 中,附件功能已启用,用户可以使用 Teams 向 bot 发送文件,并且运行良好。但是从过去
我有一个团队通知机器人,我正在尝试将其上传到团队管理门户。应用程序包上传得很好,但是当转到权限选项卡时,“组织范围权限”下没有用于添加组织范围权限的按钮。 Teams admin missing bu
我是一名优秀的程序员,十分优秀!