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

如何在没有客户密钥的情况下构建谷歌信誉?

宁欣怿
2023-03-14

我正在创建一个Android应用程序,使用一个普通的谷歌驱动器帐户作为一个应用程序-养号,如上所述,以令人难以置信的简洁,这里:

使用常规Google帐户作为应用程序拥有的帐户

不幸的是,有关如何在云端硬盘上执行任何操作的所有说明都指向客户端密钥,如下所述:

Google API控制台-缺少客户端机密

对于已安装的应用程序,这实际上不再存在。我设法通过构建一个实际的网页,在难以置信的痛苦中获得了OAuth2令牌。由此,我获得了访问令牌和刷新令牌,如第一个链接中所述。我想用这些制作一个谷歌证书对象,据我所知,这应该像这样工作:

    HttpTransport httpTransport = new NetHttpTransport();
    JsonFactory jsonFactory = new JacksonFactory();
    GoogleCredential credential = new GoogleCredential.Builder()
    .setTransport(httpTransport)
    .setJsonFactory(jsonFactory)
    .setClientSecrets(
            new GoogleClientSecrets().setInstalled(
                    new Details()
                    .setAuthUri(AUTH_URI)
                    .setClientId(CLIENT_ID)
                    //.setClientSecret("but I haven't got one!")
                    .setRedirectUris(REDIRECT_URIS)
            )
    )
    .build()
    .setAccessToken(ACCESS_TOKEN) //defined above
    .setRefreshToken(REFRESH_TOKEN); //defined above
    Drive.Builder driveBuilder = new Drive.Builder(httpTransport, jsonFactory, null);
    driveBuilder.setHttpRequestInitializer(credential);

我已经将< code>setClientSecret(...)调用as注释掉,因为我没有已安装应用程序的客户端机密。

基本上,我不能制作这个证书,我所看到的关于制作证书的每一个建议都属于以下三类之一:

  1. 专为用户登录自己的帐户而设计。不可接受;我想要为所有用户使用一个云端硬盘帐户,但需要一个常规帐户,而不是服务帐户(指定的客户端)。
  2. 基于帐户管理器或其他一些身份验证系统。出于同样的原因,不可接受。
  3. 对谷歌API的惊人性感到震惊。建议以老式方式提出请求。

顺便说一句,如果没有设置客户端密钥,我会在前提条件中得到一个空点表示.class。它并没有告诉我很多关于这一点的信息。我还试图通过子类化它来直接制作一个谷歌信用,它指示我使用谷歌证书生成器,这就是为什么我发现自己在这里。

我该怎么做才能解决此客户端密钥问题?

共有2个答案

农弘毅
2023-03-14

以下是一个问题的链接,该问题在编辑中提供了自己的答案,并利用了已接受答案的帮助:

如何在Android应用程序中设置Google Drive凭据?

简而言之,最主要的是您需要从开发人员api控制台获取简单的api访问密钥。如果找不到它,则可能需要设置驱动器 API 访问权限。

宗政霄
2023-03-14

答案似乎是取消对该行的注释。GoogleCredential。生成器成功构建凭证对象,只要客户端机密字段中有内容。但它真的有动力吗?留下来。

编辑:不,我得到了一个“无效客户端”错误。这非常令人沮丧。

 类似资料:
  • 如何在Azure密钥库中设置秘密,而不使用PowerShell。我们正在使用Azure Key Vault来安全地存储连接字符串和一些其他应用程序秘密。我们可以使用PowerShell脚本添加秘密,但我想知道是否有其他方法可以在Azure KeyVault中添加密钥,最好是使用API。我们实际上需要提供一个管理工具,应用程序管理员可以使用该工具在密钥库中添加/修改机密。

  • 我试图构建一个web应用程序,它使用spotify api通过曲目id(spotify)获取歌曲/艺术家的名字,我的目的是让每个人都能使用这个web应用程序,而不仅仅是spotify用户。 有人能证实或者给我一个解决方案吗?

  • 我研发的App使用了一些JWT令牌,而不是它生成的。到目前为止,我存储令牌,并严格比较头中给出的令牌和我在数据库中得到的令牌。 我找到的所有JWT PHP库都按以下顺序显示示例: 使用密钥ky生成令牌 我需要检查JWT是否有效(关于标头、有效负载和给定的签名),这将增加一个安全层。 在没有密钥的情况下,我如何“简单”地检查令牌完整性?

  • 我有一个rest api,它是一个Spring Boot和spring mvc项目。 还有另一个web项目,它是一个普通的spring项目。它的前端如和后端如需要调用。用户需要登录才能使用它。 我不需要对做权限控制,只有登录的用户才能通过的前端和后端访问 有一些解决方案,如、、。 我想尝试这三种方法,然后选择一种。

  • 在我的响应中,有一个,没有任何。那么,我如何获取该响应呢? 这是我的JSON代码-

  • 这款设备运行的是Android4.2.2系统,谷歌官方GCM文档显示: 运行Android4.0.4或更高版本的设备不需要谷歌帐户。 但是这些文档与使用的新版GCM相关(对我来说不是一个选项) 基本上,我的问题是: 有没有可能使GCM在没有Google帐户的情况下工作, 使用旧的、不推荐使用的GCM帮助程序库? 注意:我不能在设备上创建Google帐户(这是一个要求) 如果这是不可能的,那么请建议