インストール済みアプリのユーザー アカウントを使用した認証

このガイドでは、アプリがユーザーのマシンにインストールされているときに、BigQuery API へのアクセスについてユーザー アカウントを使用して認証する方法を説明します。

エンドユーザーが使用できる BigQuery テーブルのみにアプリがアクセスするようにするには、ユーザー認証情報を使用して認証します。ユーザー認証情報は、アプリのプロジェクトではなく、エンドユーザーの Google Cloud Platform(GCP)プロジェクトに対してのみクエリを実行できます。その結果、ユーザーはアプリではなくクエリに対して課金されます。

始める前に

  1. インストールされているアプリを表す GCP プロジェクトを作成します。
  2. BigQuery クライアント ライブラリをインストールします。
  3. 必要なライブラリをインストールします。

    Python

    Google Auth と統合された oauthlib をインストールします。
    pip install --upgrade google-auth-oauthlib

クライアント認証情報のセットアップ

次のボタンを使用してプロジェクトを選択し、必要な認証情報を作成します。

認証情報を取得

認証情報を手動で作成する

  1. Google Cloud Platform Console の API の [認証情報] ページに移動します。
  2. OAuth 同意画面の必須フィールドに必要事項を入力します。
  3. [認証情報] ページで、[認証情報を作成] ボタンをクリックします。

    [OAuth クライアント ID] を選択します。

  4. アプリの種類として [その他] を選択し、[作成] をクリックします。
  5. [JSON をダウンロード] ボタンをクリックして、認証情報をダウンロードします。

    JSON をダウンロード。

    認証情報ファイルを client_secrets.json に保存します。このファイルはアプリとともに配布する必要があります。

API の認証と呼び出し

  1. クライアント認証情報を使用して OAuth 2.0 フローを実行します。

    Python

    from google_auth_oauthlib import flow
    
    # TODO: Uncomment the line below to set the `launch_browser` variable.
    # launch_browser = True
    #
    # The `launch_browser` boolean variable indicates if a local server is used
    # as the callback URL in the auth flow. A value of `True` is recommended,
    # but a local server does not work if accessing the application remotely,
    # such as over SSH or from a remote Jupyter notebook.
    
    appflow = flow.InstalledAppFlow.from_client_secrets_file(
        'client_secrets.json',
        scopes=['https://www.googleapis.com/auth/bigquery'])
    
    if launch_browser:
        appflow.run_local_server()
    else:
        appflow.run_console()
    
    credentials = appflow.credentials
  2. 認証済みの認証情報を使用して BigQuery API に接続します。

    Python

    from google.cloud import bigquery
    
    # TODO: Uncomment the line below to set the `project` variable.
    # project = 'user-project-id'
    #
    # The `project` variable defines the project to be billed for query
    # processing. The user must have the bigquery.jobs.create permission on
    # this project to run a query. See:
    # https://cloud.google.com/bigquery/docs/access-control#permissions
    
    client = bigquery.Client(project=project, credentials=credentials)
    
    query_string = """SELECT name, SUM(number) as total
    FROM `bigquery-public-data.usa_names.usa_1910_current`
    WHERE name = 'William'
    GROUP BY name;
    """
    query_job = client.query(query_string)
    
    # Print the results.
    for row in query_job.result():  # Wait for the job to complete.
        print("{}: {}".format(row['name'], row['total']))

サンプルコードを実行すると、クライアント シークレットに関連付けられているプロジェクトへのアクセスを要求するブラウザが起動されます。サンプルで BigQuery スコープが要求されたため、生成された認証情報を使用してユーザーの BigQuery リソースにアクセスできます。

次のステップ

  1. アプリを認証して BigQuery API にアクセスするその他の方法について学びます。
  2. すべての GCP API のエンドユーザー認証情報を使用した認証について学びます。
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。