developers.home-assistant/docs/core/platform/application_credentials.md
2022-04-05 15:14:20 +00:00

2.8 KiB

title
title
Application Credentials

Integrations support Configuration via OAuth2 and the preferred approach is to use the Home Assistant Cloud Account Linking service. Integrations may also allow users to provide their own OAuth client credentials by adding a application_credentials.py and implementing the right functions.

:::note Application Credentials is under active development and integrations should still prefer using LocalOAuth2Implementation. :::

Adding support

Integrations support application credentials with a file in the integration folder called application_credentials.py and implement the following:

from homeassistant.core import HomeAssistant
from homeassistant.components.application_credentials.AuthorizationServer
from homeassistant.components.application_credentials.ClientCredential


async def async_get_authorization_server(
    self, hass: HomeAssistant
) -> AuthorizationServer:
    """Return authorization server."""
    return AuthorizationServer(
        authorize_url="https://example.com/auth",
        token_url="https://example.com/oauth2/v4/token"
    )

See below for details on backwards compatibility with YAML credentials.

AuthorizationServer

A AuthorizationServer represents the OAuth2 Authorization server used for an integration.

Name Type Description
authorize_url str Required The OAuth authorize URL that the user is redirected to during the configuration flow.
token_url str Required The URL used for obtaining an access token.

Import YAML credentials

Credentials may be imported by integrations that used to accept YAML credentials using the import API async_import_client_credential provided by the application credentials integration.

The auth_domain is the domain for the auth implementation in in the config entry, which is typically the domain specified in an existing LocalOAuth2Implementation.

ClientCredential

A ClientCredential represents the a client credential provided by the user.

Name Type Description
client_id str Required The OAuth Client ID provided by the user.
client_secret str Required The OAuth Client Secret provided by the user.