如何为离线访问的Google API生成“client_secret.json”?

问题描述 投票:0回答:2

我正在尝试使用服务帐户在后端服务中向 Google API 进行身份验证。它根本没有用户界面。

我已经使用 Service Account 从 Google 开发者控制台生成了 JSON 格式的

私钥
,但其中没有名为“client_secret”的字段。

我在GitHub上找到了这个例子,它的结构应该可以被

GoogleClientSecrets
类正确解析。

按照 GitHub 示例生成正确的

client_secret.json
有哪些步骤?

google-api google-oauth service-accounts google-developers-console
2个回答
3
投票

我需要在很长一段时间后再次执行此操作,并且我正在记录截至 2022 年 5 月的步骤。

  • 登录谷歌云控制台

  • 转到API服务->凭证

  • 点击“+ Create Credentials”,然后选择服务帐户

    • 填写服务帐户名称,它将创建一个默认帐户id
    • 单击“创建并继续”
    • 在角色选择屏幕中,我选择了所有者,因为这是我的个人项目。如果您的服务将被外部方访问,请考虑仅授予所需的权限
    • 点击继续
    • 我没有在屏幕上选择任何用户/管理员角色 3. 单击“完成”。
  • 您将返回凭据屏幕。单击您刚刚创建的服务帐户电子邮件。

    • 您应该位于“详细信息”选项卡上。单击“按键”选项卡。
    • 单击“添加密钥”下拉列表,然后单击“创建新密钥”。
    • 选择 JSON 密钥类型(默认),然后单击“创建”。
    • 这应该会下载一个 json 文件给您。那个文件

然后您可以使用该凭据访问 Google 服务。例如,在我的例子中,我使用以下代码访问 youtube 服务。

clientSecretsStream
是该凭证 json 文件的输入流。

public static YouTube initializeYouTube(InputStream clientSecretsStream, String appName) throws IOException {
    final HttpTransport httpTransport = new NetHttpTransport();
    final JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();

    GoogleCredential credential = GoogleCredential.fromStream(clientSecretsStream)
            .createScoped(Collections.singleton(YouTubeScopes.YOUTUBE_READONLY));

    return new YouTube.Builder(httpTransport, jsonFactory, credential)
            .setApplicationName(appName)
            .build();
}

0
投票

如果您没有客户端密钥,那么您生成的凭据类型错误。

创建 client_secret.json 文件。您转到 Google 开发者控制台

  1. 创建项目
  2. 转到左侧的凭据选项卡
  3. 单击此页面顶部名为“创建凭据”的按钮
  4. 在下拉列表中选择“服务帐户”并填写所需信息。

然后您将被提示下载 client_secret.json 文件。

如果您打算使用任何 google api,请务必转到左侧的库并启用您将使用的 API。

© www.soinside.com 2019 - 2024. All rights reserved.