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

无需手动登录即可使用预建帐户登录-Android Google Drive API

裴鸿熙
2023-03-14

我正在做一个研究项目,我需要在30台设备上安装一个应用程序,所有这些设备都没有谷歌帐户。我需要做的是将应用程序的结果保存在我的谷歌驱动器文件夹中(我有它的id)。目前这是我的登录过程,它要求一个谷歌帐户:

private void requestSignIn() {
    Log.d(TAG, "Requesting sign-in");
    GoogleSignInOptions signInOptions =
            new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestEmail()
                    .requestScopes(new Scope(DriveScopes.DRIVE_FILE))
                    .build();
    GoogleSignInClient client = GoogleSignIn.getClient(this, signInOptions);
    // The result of the sign-in Intent is handled in onActivityResult.
    startActivityForResult(client.getSignInIntent(), REQUEST_CODE_SIGN_IN);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
    switch (requestCode) {
        case REQUEST_CODE_SIGN_IN:
            if (resultCode == this.RESULT_OK && resultData != null) {
                handleSignInResult(resultData);
            }
            break;
    }

    super.onActivityResult(requestCode, resultCode, resultData);
}

private void handleSignInResult(Intent result) {
    GoogleSignIn.getSignedInAccountFromIntent(result)
            .addOnSuccessListener(googleAccount -> {
                Log.d(TAG, "Signed in as " + googleAccount.getEmail());
                // Use the authenticated account to sign in to the Drive service.
                GoogleAccountCredential credential =
                        GoogleAccountCredential.usingOAuth2(
                                this, Collections.singleton(DriveScopes.DRIVE_FILE));
                credential.setSelectedAccount(googleAccount.getAccount());
                Drive googleDriveService =
                        new Drive.Builder(
                                AndroidHttp.newCompatibleTransport(),
                                new GsonFactory(),
                                credential)
                                .setApplicationName("Drive API Migration")
                                .build();

                mDriveServiceHelper = new DriveServiceHelper(googleDriveService);
            })
            .addOnFailureListener(exception -> Log.e(TAG, "Unable to sign in.", exception));
}

既然我知道我的凭据和我需要工作的目录的ID,有没有办法修改代码并将我的帐户合并到登录过程中,这样我就不需要在设备上配置google帐户?

共有1个答案

龙智
2023-03-14

我可以想出两种选择:

  1. 创建一个HTTP后端以将数据发送到。想到的是Apps Script Web应用程序(带有内容服务的发布事件),或带有HTTP触发器的Google Cloud功能。
  2. 使用权限非常窄的服务号(很难做到,任何使用该应用程序的人都可以使用该帐户)。
  • 谷歌应用程序脚本概述(应用程序脚本指南)
  • Web应用程序(应用程序脚本指南)
  • 云功能(谷歌云)
  • 服务帐户(谷歌IAM文档)
 类似资料:
  • 我正面临一个奇怪的admob登录问题,无法找到任何解释这个确切的问题在网上。问题来了:--我有一个admob账户--我在这个账户上安装了一个应用程序链接--应用商店上发布的应用程序完美地显示了广告--但在此之后的3、4天,我就无法登录我的admob账户了。与此同时,该应用程序已经停止显示这些广告。-每次我尝试登录时,admob网页都告诉我“您当前以charlesdurandjp@gmail.com

  • 问题内容: 我使用PuTTY SSH会话从Windows 10笔记本电脑登录到服务器。 我的本地Windows笔记本电脑上没有Docker,因此所有工作都在远程服务器上完成。 我可以使用终端会话在远程服务器上执行所有Docker命令。 但是,当我尝试将映像保存到Docker集线器时,尝试登录时,请使用: 我收到以下错误消息: 在远程服务器上创建映像时,没有收到任何错误消息。 我也没有在远程服务器上

  • 我使用PuTTY SSH会话从Windows 10笔记本电脑登录到服务器。 我的本地Windows笔记本电脑上没有Docker,所以所有的工作都在远程服务器上完成。 我可以使用终端会话在远程服务器上执行所有Docker命令。 但是,当我尝试将我的映像保存到Docker中心时,当我尝试登录时,使用: 我收到以下错误消息: 在远程服务器上创建映像时,我没有收到任何错误消息。 我也没有看到一个。远程服务

  • web应用程序的单点登录(SSO)(通过浏览器使用)已得到充分的证明和确立。为富客户端建立SSO比较困难,通常建议基于Kerberos票证,尤其是使用Windows登录域中的ActiveDirectory。 但是,我正在为以下问题寻找一个更通用的解决方案:我需要建立“真正的”SSO(所有应用程序的一个标识,即不仅仅是跨应用程序的密码同步),其中在客户端(非托管计算机,包括非Windows),“最终

  • 这是一个PHP代码片段,来自我正在全局转换为PDO的项目。这就是功能。登录页面的php文件。显然,它没有完全转换为PDO,所以不要批评它,但基本上是在登录中。php文件我让它访问这个方法,并从表单中传递数据库(在中是必需的)、用户名和密码。我设置了一个基本查询,以查找使用表单用户名输入的所有用户。然后我准备并执行查询。然后,我需要一个行计数,因此我在查询上设置了一个$rowcount变量,运行ro

  • 嗨,我正在尝试对我的登录页面进行Microsoft单点登录身份验证。为此,我已经使用它创建了Azure多租户目录,并根据给定的链接https://www.c-sharpconer.com/article/azure-ad-authentication-for-mvc-web-application/创建了带有重定向URI的应用程序。成功地集成了代码,当运行时,我在输入用户名和密码后,我在错误下面得