Thư viện ứng dụng

Trang này cung cấp các đường liên kết đến những cách thuận tiện để truy cập vào Google Health API.

Thư viện ứng dụng API của Google Health

API Google Health được xây dựng trên HTTP và JSON, do đó, mọi ứng dụng HTTP tiêu chuẩn đều có thể gửi yêu cầu tới API này và phân tích cú pháp các phản hồi.

Tuy nhiên, thay vì tạo yêu cầu HTTP và phân tích cú pháp phản hồi theo cách thủ công, bạn có thể muốn sử dụng thư viện ứng dụng API của Google. Các thư viện ứng dụng cung cấp tính năng tích hợp ngôn ngữ tốt hơn, có mức độ bảo mật cao hơn và hỗ trợ thực hiện các lệnh gọi yêu cầu người dùng phải uỷ quyền.

Go

Tải thư viện ứng dụng API Google Health mới nhất cho Go. Đọc hướng dẫn dành cho nhà phát triển của thư viện ứng dụng.

Java

Trang này cung cấp thông tin về cách bắt đầu sử dụng Google Health API bằng Thư viện ứng dụng API của Google cho Java. Để biết thêm thông tin, hãy xem tài liệu sau đây:

Thêm thư viện ứng dụng vào dự án

Chọn môi trường tạo bản dựng của bạn (Maven hoặc Gradle) qua các thẻ sau đây:

JavaScript

Đọc hướng dẫn dành cho nhà phát triển của thư viện ứng dụng.

.NET

Trang này cung cấp thông tin về cách bắt đầu sử dụng Google Health API bằng Thư viện ứng dụng API của Google cho .NET. Để biết thêm thông tin, hãy xem tài liệu sau đây:

Tải thư viện xuống

Cài đặt gói NuGet: Google.Apis.

Node.js

Tải thư viện ứng dụng Google Health API mới nhất cho Node.js. Đọc hướng dẫn dành cho nhà phát triển của thư viện ứng dụng.

Obj-C

Tải thư viện ứng dụng API Google Health mới nhất cho Objective-C. Đọc hướng dẫn dành cho nhà phát triển của thư viện ứng dụng.

PHP

Tải thư viện ứng dụng API Google Health mới nhất cho PHP. Đọc hướng dẫn dành cho nhà phát triển của thư viện ứng dụng.

Python

Trang này cung cấp thông tin về cách làm quen với Google Health API bằng Thư viện ứng dụng API của Google cho Python (phiên bản 1/phiên bản 2). Để biết thêm thông tin, hãy xem tài liệu sau đây:

Yêu cầu về hệ thống

Cài đặt thư viện ứng dụng

Bạn có thể sử dụng trình quản lý gói để cài đặt hoặc tải thư viện ứng dụng Python xuống rồi cài đặt theo cách thủ công:

Cài đặt qua trình quản lý

Dùng pip hoặc setuptools để quản lý hoạt động cài đặt của bạn. Có thể trước tiên bạn phải chạy sudo.

  • pip (ưu tiên):
    pip install --upgrade google-api-python-client
  • Setuptools:
    easy_install --upgrade google-api-python-client

Cài đặt theo cách thủ công

  1. Tải thư viện ứng dụng mới nhất cho Python.
  2. Giải nén mã.
  3. Cài đặt:
    python setup.py install

App Engine

Do các thư viện ứng dụng Python không cài đặt được trong môi trường chạy App Engine Python, nên bạn phải sao chép các thư viện đó vào ứng dụng của mình y như thư viện của bên thứ ba.

Ruby

Trang này cung cấp thông tin về cách bắt đầu sử dụng Google Health API bằng Thư viện ứng dụng API của Google cho Ruby. Để biết thêm thông tin, hãy xem tài liệu sau đây:

Cài đặt gem google-api-client

Tuỳ thuộc vào hệ thống của bạn, có thể bạn phải thêm sudo vào phần đầu các lệnh này.

Nếu bạn chưa từng cài đặt Thư viện ứng dụng API của Google cho Ruby, hãy cài đặt bằng cách sử dụng RubyGems:

gem install google-api-client

Nếu bạn từng cài đặt gem này, hãy cập nhật lên phiên bản mới nhất:

gem update -y google-api-client

Bắt đầu sử dụng Thư viện ứng dụng API của Google cho Ruby

Để tìm hiểu cách đưa ra yêu cầu đầu tiên, hãy xem phần Hướng dẫn bắt đầu sử dụng.

gRPC

Google Health API cũng hỗ trợ gRPC để truy xuất dữ liệu hiệu suất cao. Ngoài việc cài đặt thư viện ứng dụng, việc sử dụng gRPC yêu cầu bạn phải lấy định nghĩa Protocol Buffers của API và tạo mã giả lập phía máy khách trước khi đưa ra yêu cầu.

  1. Cài đặt thư viện gRPC:
    • Sử dụng pip install grpcio grpcio-tools google-auth-oauthlib để cài đặt các phần phụ thuộc.
  2. Tạo mã ứng dụng:
    • Lấy các định nghĩa .proto của Google Health API (ví dụ: data_points.proto).
    • Chạy python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. path/to/your/data_points.proto để tạo mã gốc.
  3. Triển khai OAuth 2.0 và đưa ra các yêu cầu gRPC:
    • Sử dụng google-auth-oauthlib để uỷ quyền và sử dụng mã giả lập ứng dụng khách đã tạo để đưa ra các yêu cầu gRPC, như trong ví dụ sau.
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}")
  • Nhập thư viện:
    • grpc: Thư viện gRPC Python.
    • google.auth.transport.grpc: Để tạo các kênh bảo mật, được xác thực.
    • data_points_pb2, data_points_pb2_grpc: Mã ứng dụng được tạo từ các tệp .proto.
  • Cấu hình:
    • CLIENT_SECRETS_FILE: Đường dẫn đến tệp client_secret.json.
    • SCOPES: Các quyền bắt buộc.
    • TOKEN_FILE: Đường dẫn để lưu trữ mã thông báo OAuth.
    • GRPC_ENDPOINT: Tên máy chủ lưu trữ cho dịch vụ gRPC của Google Health.
  • get_credentials():
    • Tải mật khẩu ứng dụng khách từ tệp, sử dụng InstalledAppFlow từ google-auth-oauthlib để quản lý hoạt động uỷ quyền, cố gắng tải thông tin đăng nhập đã lưu trữ hoặc bắt đầu quy trình OAuth 2.0 nếu cần.
  • fetch_health_data_grpc():
    • Tạo một kênh gRPC được xác thực, bảo mật bằng thông tin đăng nhập của người dùng.
    • Khởi chạy DataPointsServiceStub bằng kênh.
    • Tạo một ListDataPointsRequest để yêu cầu dữ liệu về số bước cho users/me.
    • Gọi phương thức RPC ListDataPoints và in phản hồi.
  • Xử lý lỗi: Mã này bao gồm các khối try...except cơ bản để xử lý gRPC và các lỗi khác.