You are currently viewing the new Anvil Editor Docs.
Switch to the Classic Editor Docs
You are currently viewing the Classic Editor Docs.
Switch to the new Anvil Editor Docs

Google REST APIs

You might want to use one of Google’s REST APIs directly. To do this, you will need a Google API Client ID from the Google Developer Console - see Linking Anvil and Google for full instructions.

To request additional OAuth scopes, call anvil.google.auth.login() with a list of scope names. In this case we are requesting the ability to read the user’s Gmail inbox with the Gmail API.

# Log in and request access to a user's mailbox
anvil.google.auth.login(["https://www.googleapis.com/auth/gmail.readonly"])

Once logged in, you can get an access token for the current user’s session by calling anvil.google.auth.get_access_token(). This token is a string, and you can use it to make requests to the Google REST API. In this example, we are getting a list of threads in the user’s inbox using the Gmail API.

access_token = anvil.google.auth.get_user_access_token()

email_threads = anvil.http.request(
    "https://www.googleapis.com/gmail/v1/users/me/threads",
    json=True, headers={
      'Authorization':
        'Bearer ' + access_token
    })

Access tokens expire within a short period of time (typically less than an hour). If you want to retain access after this time, you need to store a refresh token. This refresh token can be converted into an access token later by calling anvil.google.auth.refresh_access_token().

refresh_token = anvil.google.auth.get_user_refresh_token()

# ... some time later ...

access_token = anvil.google.auth.refresh_access_token(refresh_token)

Do you still have questions?

Our Community Forum is full of helpful information and Anvil experts.