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

com.google.api.client.auth.oauth2.TokenResponseException:401未经授权

太叔京
2023-03-14

我想使用爪哇谷歌驱动器API。我尝试了这段代码:

public Drive getDriveService() throws GeneralSecurityException, IOException, URISyntaxException
    {
        HttpTransport httpTransport = new NetHttpTransport();
        JacksonFactory JSON_FACTORY = new JacksonFactory();

        GoogleCredential credential = new GoogleCredential.Builder()
            .setTransport(httpTransport)
            .setJsonFactory(JSON_FACTORY)
            .setServiceAccountId("sonoratestw-226@sonora-project.iam.gserviceaccount.com")
            .setServiceAccountPrivateKeyFromP12File(new java.io.File("C:\\buffer\\sonora project-3256770463ed.p12"))
            .setServiceAccountScopes(Collections.singleton(SQLAdminScopes.SQLSERVICE_ADMIN))
            .setServiceAccountUser("sonoratestw@gmail.com")
            .build();

        Drive service = new Drive.Builder(httpTransport, JSON_FACTORY, null)
            .setApplicationName("FileListAccessProject")
            .setHttpRequestInitializer(credential).build();

        return service;
    }

但是我得到了这个错误:

An error occurred: com.google.api.client.auth.oauth2.TokenResponseException: 401 Unauthorized

我使用以下配置:

你能告诉我怎么解决这个问题吗?

共有1个答案

宰父单弓
2023-03-14

基于此SO问题,您得到错误401的一个原因是您使用的服务号无法访问与您的Gmail地址关联的驱动器帐户。因此,如果您希望能够访问它上传的文件,您必须通过服务号授予自己访问它们的权限。

以下是我认为可以帮助您更多了解服务帐户的其他问题

>

  • google oaut2模拟服务号user@gmail.com

    谷歌驱动器api服务帐户查看使用java将文件上传到谷歌驱动器

    Google Drive按服务号更改权限

  •  类似资料:
    • 我的代码:GoogleCredential凭据 credential.refreshToken() 错误日志: 创建服务号的步骤: 我在凭据中的oauth 2.0中创建了一个Web应用程序 然后我用客户端ID创建了一个服务号 现在我正在使用这个服务号和从它生成的p12证书来验证和创建Google凭据的对象 一旦刷新令牌,我就给了我401例外。 在这种情况下,任何帮助都会受到感激

    • 我尝试了这里给出的例子。 https://developers.google.com/sheets/quickstart/java 它给了我这个例外- 我已经给了它所有必要的许可。 我使用的是表单api版本v4 更新- 如果我在示例中传递而不是,那么它会给我这个响应。 变化- 响应 - 我从这个链接得到了进一步的帮助来解决< code>400 -无法解析范围:类数据!A2:A4" 400错误请求解

    • null null 使用NodePort服务公开Keycloak。 应用程序使用istio入口网关公开。 Keycloak服务器版本:9.0.0。

    • 我正在尝试登录基于cloudflare服务器的网站。我使用cloudserver绕过了登录问题,但我的下一个停止点是当我试图发送get请求以访问一些登录后令牌时。 我的代码: 这返回401作为答案: 它的标题是 好的,我首先试着给一个auth。这样地 我再次得到相同的错误,401,但这次响应的头确实有一个www身份验证,我应该质询 根据我所读到的内容,它是基本的意味着我必须在我的头文件中添加一个像

    • 我试图通过访问Google Admin SDK API来提取我域中的用户。但是,我被赋予了401未经授权的异常。下面的代码是我的设置类,其中包含我调用API的方法。 下面的代码是我用来从我的域中提取用户的测试用例: 最后,这是我面临的一个例外。 任何帮助都将不胜感激!!!

    • 我正在使用Maven Jib插件将我的应用程序部署到Gitlab docker注册表。如果我使用并输入用户名和密码,我可以成功登录gitlab注册表。我可以看到