客户端库

本页提供了指向访问 Google Health API 的便捷方式的链接。

Google Health API 客户端库

Google Health API 基于 HTTP 和 JSON 构建,因此任何标准 HTTP 客户端都可以向其发送请求并解析响应。

不过,您可能并不想手动创建 HTTP 请求以及解析响应,而是想使用 Google API 客户端库。使用客户端库具有多项优势,例如更好的语言集成,更高的安全性,以及支持进行需要用户授权的调用。

Go

获取最新的 Go 版 Google Health API 客户端库。阅读该客户端库的开发者指南

Java

此页面包含有关通过 Java 版 Google API 客户端库开始使用 Google Health API 的信息。如需了解详情,请参阅以下文档:

将客户端库添加到您的项目中

从以下标签页中选择构建环境(Maven 或 Gradle):

JavaScript

阅读该客户端库的开发者指南

.NET

此页面包含有关通过 .NET 版 Google API 客户端库开始使用 Google Health API 的信息。如需了解详情,请参阅以下文档:

下载库

安装 NuGet 软件包:Google.Apis

Node.js

获取最新的 Node.js 版 Google Health API 客户端库。阅读该客户端库的开发者指南

Obj-C

获取最新的 Objective-C 版 Google Health API 客户端库。阅读该客户端库的开发者指南

PHP

获取最新的 PHP 版 Google Health API 客户端库。阅读该客户端库的开发者指南

Python

此页面包含有关通过 Python 版 Google API 客户端库 (v1/v2) 开始使用 Google Health API 的信息。如需了解详情,请参阅以下文档:

系统要求

安装客户端库

您既可以使用软件包管理器,也可以手动下载并安装 Python 客户端库:

托管安装

利用 pip 或 setuptools 管理安装流程,您可能需要先运行 sudo

  • pip(首选):
    pip install --upgrade google-api-python-client
  • Setuptools
    easy_install --upgrade google-api-python-client

手动安装

  1. 下载最新的 Python 版客户端库
  2. 解压缩代码。
  3. 安装:
    python setup.py install

App Engine

由于 App Engine Python 运行时环境中未安装 Python 客户端库,因此您必须像使用第三方库一样将这些库复制到您的应用中

Ruby

此页面包含有关通过 Ruby 版 Google API 客户端库开始使用 Google Health API 的信息。如需了解详情,请参阅以下文档:

安装 google-api-client gem

您可能需要在这些命令前面加上 sudo,具体取决于您的系统。

如果您之前未安装过 Ruby 版 Google API 客户端库,请使用 RubyGems 进行安装:

gem install google-api-client

如果您已安装 gem,请更新至最新版本:

gem update -y google-api-client

Ruby 版 Google API 客户端库使用入门

如需了解如何发出第一个请求,请参阅入门指南

gRPC

Google Health API 还支持 gRPC,以实现高性能的数据检索。除了安装客户端库之外,使用 gRPC 还需要获取 API 的协议缓冲区定义,并在发出请求之前生成客户端桩代码。

  1. 安装 gRPC 库
    • 使用 pip install grpcio grpcio-tools google-auth-oauthlib 安装依赖项。
  2. 生成客户端代码
    • 获取 Google Health API .proto 定义(例如 data_points.proto)。
    • 运行 python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. path/to/your/data_points.proto 以生成桩代码。
  3. 实现 OAuth 2.0 并发出 gRPC 请求
    • 使用 google-auth-oauthlib 进行授权,并使用生成的客户端桩来发出 gRPC 请求,如下例所示。
import google.auth
from google.auth.transport.grpc import secure_authorized_channel
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
import os
import json
import grpc

# Generated gRPC code from data_points.proto
# These imports depend on the output of grpc_tools
try:
    import data_points_pb2
    import data_points_pb2_grpc
except ImportError:
    print("Please generate gRPC code from data_points.proto")
    data_points_pb2 = None
    data_points_pb2_grpc = None

# --- REPLACE WITH YOUR VALUES ---
CLIENT_SECRETS_FILE = 'path/to/your/client_secret.json'
SCOPES = ['https://www.googleapis.com/auth/health']  # Add other scopes as needed
TOKEN_FILE = 'token.json'
GRPC_ENDPOINT = 'health.googleapis.com' # Google Health API gRPC endpoint

def get_credentials():
    """Gets or creates OAuth 2.0 credentials."""
    creds = None
    # The file token.json stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists(TOKEN_FILE):
        with open(TOKEN_FILE, 'r') as token:
            creds = Credentials.from_authorized_user_info(json.load(token), SCOPES)
    # If there are no (valid) credentials available, let the user log in.
    if creds and creds.expired and creds.refresh_token:
        try:
            creds.refresh(Request())
        except Exception as e:
            creds = None  # Force re-auth if refresh fails
    if not creds or not creds.valid:
        flow = InstalledAppFlow.from_client_secrets_file(
            CLIENT_SECRETS_FILE, SCOPES
        )
        creds = flow.run_local_server(port=0)
        # Save the credentials for the next run
        with open(TOKEN_FILE, 'w') as token:
            token.write(creds.to_json())
    return creds

def fetch_health_data_grpc(creds):
    """Fetches health data using gRPC."""
    if not data_points_pb2_grpc:
        return
    try:
        # Create an authenticated gRPC channel
        channel = secure_authorized_channel(creds, Request(), f'{GRPC_ENDPOINT}:443')
        # Create a stub for the DataPointsService
        stub = data_points_pb2_grpc.DataPointsServiceStub(channel)

        # Example: list steps data points for the authenticated user 'me'
        request = data_points_pb2.ListDataPointsRequest(parent='users/me/dataTypes/steps')
        response = stub.ListDataPoints(request)
        print('Health data via gRPC:', response)
    except grpc.RpcError as e:
        print(f'Error fetching data via gRPC: {e.code()} - {e.details()}')
    except Exception as e:
        print(f'An error occurred during gRPC call: {e}')

if __name__ == '__main__':
    try:
        creds = get_credentials()
        print("Fetching data using gRPC...")
        fetch_health_data_grpc(creds)
    except Exception as e:
        print(f"An error occurred: {e}")
  • 导入库
    • grpc:gRPC Python 库。
    • google.auth.transport.grpc:用于创建安全且经过身份验证的渠道。
    • data_points_pb2data_points_pb2_grpc:根据 .proto 文件生成的客户端代码。
  • 配置
    • CLIENT_SECRETS_FILEclient_secret.json 文件的路径。
    • SCOPES:所需权限。
    • TOKEN_FILE:用于存储 OAuth 令牌的路径。
    • GRPC_ENDPOINT:Google Health gRPC 服务的主机名。
  • get_credentials()
    • 从文件中加载客户端密钥,使用 google-auth-oauthlib 中的 InstalledAppFlow 管理授权,尝试加载存储的凭据,或在需要时启动 OAuth 2.0 流程。
  • fetch_health_data_grpc()
    • 使用用户的凭据创建经过身份验证的安全 gRPC 渠道。
    • 使用渠道初始化 DataPointsServiceStub
    • 创建 ListDataPointsRequest 以请求 users/me 的步数数据。
    • 调用 ListDataPoints RPC 方法并打印响应。
  • 错误处理:该代码包含用于处理 gRPC 和其他错误的基本 try...except 代码块。