如何在具有硬编码凭据的 Android 项目中使用 Google Drive SDK

2023-12-31

如何将凭据硬编码到我的 Google Drive 服务,以便应用程序的用户始终无需身份验证即可访问我的文件?

我找到了使用 Java SKD 的解决方案,但这些库不能很好地与 Android 配合使用:https://developers.google.com/drive/service-accounts#use_service_accounts_as_application-owned_accounts https://developers.google.com/drive/service-accounts#use_service_accounts_as_application-owned_accounts

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


好的,我已经找到了解决我的问题的方法。

当然,我的应用程序是Android应用程序,我不想让用户登录/使用任何凭据连接到我的云端硬盘,最后我可以使用默认的云端硬盘网络应用程序操作文件。

  1. 需要采取 Seps:创建服务帐户 as in this https://developers.google.com/drive/service-accounts#google_apis_console_project_service_accounts例子。
  2. 下载私钥API访问站点并把它例如。在 资产文件夹。
  3. Download and import these libraries:
    • google-api-client-1.13.2-beta.jar
    • google-api-client-android-1.13.2-beta.jar
    • google-api-services-drive-v2-rev60-1.13.2-beta.jar
    • 谷歌-http-client-1.13.1-beta.jar
    • 谷歌-http-client-android-1.13.1-beta.jar
    • 谷歌-http-client-gson-1.13.1-beta.jar
    • 谷歌-http-client-jackson2-1.13.1-beta.jar
    • 谷歌-oauth-client-1.13.1-beta.jar
    • gson-2.1.jar
    • 番石榴-jdk5-13.0.jar
    • 杰克逊核心-2.0.5.jar
    • jsr305-1.3.9.jar
  4. 实施 Drive 服务 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;
    }
    

    Where G_SERVICE_EMAIL电子邮件地址来自API访问站点 and PKC_12_文件是之前下载的私钥。

  5. 允许您的服务访问您的云端硬盘中的文件夹:在文件夹的共享选项中驱动应用程序 https://drive.google.com允许用户使用电子邮件: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;
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在具有硬编码凭据的 Android 项目中使用 Google Drive SDK 的相关文章

随机推荐

  • ActionBar 菜单项选择器 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 是否可以在按下时更改菜单项的图像 并且可以通过选择器来完成 按下或选择时不同的菜单项应使用不同的图像进行更改 一些示例代码会很好 我查了很多
  • 使用 Python 通过 Google API 将电子表格复制到另一张电子表格

    我正在尝试从模板创建一个谷歌电子表格 然后编辑其值 单元格 我只需手动访问原始电子表格并单击复印一份来自File菜单 我还没有找到使用 Python3 和 gspread 来做到这一点的方法 因此 我正在尝试寻找解决方法 因此 我使用 Py
  • withNavigation 只能用于导航器的视图层次结构

    我收到错误 不变违规 withNavigation 只能在视图上使用 导航器的层次结构 被包装的组件无法获取 从 props 或 context 访问导航 我不知道为什么 因为我正在使用withNavigation在我的应用程序的其他组件中
  • 将所有互联网流量从我的 Android VoIP 应用程序路由到我自己的 VPN 服务器

    我们已经设置了您自己的 VPN 服务器 并希望通过此服务器路由来自您的 VOIP android 应用程序的所有流量 但到目前为止我看到的所有解决方案都使用 vpn 服务类http developer android com referen
  • 友好 URL(mod 重写)问题

    Hallo 我正在尝试创建 漂亮 的 URL 第一条规则按预期工作 它正在转动 www blabla com index php page tags tag blabla into www blabla com tags blabla 但第
  • Flutter - 更改堆栈顺序

    我有一个堆栈 在某种条件下 例如用户单击 我希望将较低顺序的小部件之一推到堆栈的顶部 使用下面的代码作为一个简单的示例 在 setState 方法中我需要什么代码来重新排序 以便第一个 底部 小部件成为最后一个 顶部 小部件 new Sta
  • 非静态字段、方法或属性需要对象引用

    我想以所有形式传递 myConnString 我正在 winform 和 mysql C 中工作 所以我尝试了这个链接 http www daniweb com software development csharp threads 499
  • 模板类限制[重复]

    这个问题在这里已经有答案了 我想知道是否有任何方法可以限制使用自定义条件为模板生成代码 在我的情况下 我想仅当模板类 T 已由类 bar 继承时才调用 foo 函数 类似这样 template
  • 为什么其他程序看不到我在 VS Code 中对文件所做的更改,直到我保存这些更改?

    我注意到当我在 VS Code 中更改文件时 另请参阅VS Code 选项卡手柄上有一个白点意味着什么 https stackoverflow com q 76024956 11107541 在我保存这些更改之前 其他程序仍会看到该文件的上
  • 正则表达式 - URL 中的希腊字符

    我有一个使用正则表达式的自定义路由器 问题是我无法解析希腊字符 以下是一些来自index php router gt get theatre plays TheatreController showPlays router gt get t
  • 分解旋转矩阵 (x,y',z'') - 笛卡尔角度

    分解旋转矩阵 x y z 笛卡尔角度 我目前正在与旋转矩阵我有以下问题 给定三个坐标系 O0 x0 y0 z0 O1 x1 y1 z1 O2 x2 y2 z2 这一致 我们首先相对于帧 0 旋转帧 1 然后相对于帧 1 旋转帧 2 旋转的顺
  • 导入错误:无法导入名称“getLogger”

    这个问题在这里已经有答案了 但似乎我遇到了一种无法用答案解释的情况 详细信息如下 我有一个名为logging py 的文件 代码如下 import sys print sys path from logging import getLogg
  • “应用程序包的顶层”在哪里?在 XCode 中

    我试图将 Default png 图像放入我的 iPhone 应用程序中 但无法弄清楚 应用程序包的顶层 在 XCode 窗口中的位置 在压缩发布之前 您是否不将其添加到 Xcode 中 而是添加到构建文件中 只需将其添加到您的项目中即可
  • 在 Unity 中注册类型时如何传入构造函数参数?

    我在 Unity 中注册了以下类型 container RegisterType
  • 使用 mod_wsgi 记录烧瓶错误

    很长一段时间以来我一直在努力让它发挥作用 但现在我真的束手无策 我已经尝试做我可以在 SO 和 Flask 文档中找到的所有内容 但仍然无法使用简单的错误日志来调试我的应用程序 下面是粘贴的代码 main py from flask imp
  • Powershell - “表达式只允许作为管道的第一个元素”

    在以下情况下如何避免此错误 codegenDir Z Desktop Song Renamer PowerShellRepresentation dir path MyMusicFolder recurse include mp3 m4a
  • CSS 停止图像下的文本换行

    我有以下标记 li img class fav star src images fav png span Text text and more text span li 我希望这样 如果文本换行 它就不会进入图像的 列 我知道我可以用tab
  • 清除网络浏览器控件中的选择

    我有一个带有网络浏览器控件的表单 我将所有文本 不是 html 数据复制到剪贴板 为此 代码片段是 webBrowser2 Document ExecCommand SelectAll false null webBrowser2 Docu
  • 仅数学证明助理

    大多数证明助手都是具有依赖类型的函数式编程语言 他们可以证明程序 算法 相反 我感兴趣的是最适合数学且仅适合数学 例如微积分 的证明助手 你能推荐一个吗 我听说过 Mizar 但我不喜欢源代码被关闭 但如果它最适合数学 我会使用它 Agda
  • 如何在具有硬编码凭据的 Android 项目中使用 Google Drive SDK

    如何将凭据硬编码到我的 Google Drive 服务 以便应用程序的用户始终无需身份验证即可访问我的文件 我找到了使用 Java SKD 的解决方案 但这些库不能很好地与 Android 配合使用 https developers goo