🔑

Authenticate to Google API on cloud notebooks

Category
Google Cloud Platform
Published on
April 20, 2020

Setup

When working with Google APIs on a AI Platform Notebook, you cannot access localhost like on a local machine. To generate credentials, the Google Auth library gives you the option to generate a callback URL on a remote address. For more details, refer to this support page.

# Import library and start authentication flow
from google_auth_oauthlib import flow

appflow = flow.InstalledAppFlow.from_client_secrets_file(
    './client_secrets.json',
    scopes=['https://www.googleapis.com/auth/bigquery'])

Running a local server

Visit the URL, authorize your app when prompted, and the autentication process will automatically complete.

# If running a local server:
appflow.run_local_server()
Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=707506262186-8li17b8ftmtls5t1da3tbqjcl6.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fbigquery&state=X9l4xFtJDu1R7ykeGfkFNke0S0X&access_type=offline

Running a remote server

In this case, for example when running code on an AI Platform Notebook, you cannot use localhost as callback URL. Use run_console() instead, and after visiting the URL and authorizing your app, you will be given an authorization code to be pasted in the prompt.

# If running a remote server:
appflow.run_console()
Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=707506262186-8li17b8ftmtls5t1da3tbqjcl6.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fbigquery&state=TgyqXhRch1u2vtxhfypmhEUQcuF&prompt=consent&access_type=offline

Enter the authorization code:  4/ywF6LRH5rJoC6f0531aNgoapZqepKtJRBOPAPMzHdF0ToBk4k