mirror of
https://github.com/home-assistant/core.git
synced 2025-04-25 01:38:02 +00:00
Include the redirect URL in the Google Drive instructions (#136906)
* Include the redirect URL in the Google Drive instructions * Apply suggestions from code review Co-authored-by: Martin Hjelmare <marhje52@gmail.com> --------- Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
parent
f93b1cc950
commit
6c93d6a2d0
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
from homeassistant.components.application_credentials import AuthorizationServer
|
from homeassistant.components.application_credentials import AuthorizationServer
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
from homeassistant.helpers import config_entry_oauth2_flow
|
||||||
|
|
||||||
|
|
||||||
async def async_get_authorization_server(hass: HomeAssistant) -> AuthorizationServer:
|
async def async_get_authorization_server(hass: HomeAssistant) -> AuthorizationServer:
|
||||||
@ -18,4 +19,5 @@ async def async_get_description_placeholders(hass: HomeAssistant) -> dict[str, s
|
|||||||
"oauth_consent_url": "https://console.cloud.google.com/apis/credentials/consent",
|
"oauth_consent_url": "https://console.cloud.google.com/apis/credentials/consent",
|
||||||
"more_info_url": "https://www.home-assistant.io/integrations/google_drive/",
|
"more_info_url": "https://www.home-assistant.io/integrations/google_drive/",
|
||||||
"oauth_creds_url": "https://console.cloud.google.com/apis/credentials",
|
"oauth_creds_url": "https://console.cloud.google.com/apis/credentials",
|
||||||
|
"redirect_url": config_entry_oauth2_flow.async_get_redirect_uri(hass),
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application_credentials": {
|
"application_credentials": {
|
||||||
"description": "Follow the [instructions]({more_info_url}) for [OAuth consent screen]({oauth_consent_url}) to give Home Assistant access to your Google Drive. You also need to create Application Credentials linked to your account:\n1. Go to [Credentials]({oauth_creds_url}) and select **Create Credentials**.\n1. From the drop-down list select **OAuth client ID**.\n1. Select **Web application** for the Application Type."
|
"description": "Follow the [instructions]({more_info_url}) to configure the Cloud Console:\n\n1. Go to the [OAuth consent screen]({oauth_consent_url}) and configure\n1. Go to [Credentials]({oauth_creds_url}) and select **Create Credentials**.\n1. From the drop-down list select **OAuth client ID**.\n1. Select **Web application** for the Application Type.\n1. Add `{redirect_url}` under *Authorized redirect URI*."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,6 +55,21 @@ OAUTH_AUTHORIZE_URL_TIMEOUT_SEC = 30
|
|||||||
OAUTH_TOKEN_TIMEOUT_SEC = 30
|
OAUTH_TOKEN_TIMEOUT_SEC = 30
|
||||||
|
|
||||||
|
|
||||||
|
@callback
|
||||||
|
def async_get_redirect_uri(hass: HomeAssistant) -> str:
|
||||||
|
"""Return the redirect uri."""
|
||||||
|
if "my" in hass.config.components:
|
||||||
|
return MY_AUTH_CALLBACK_PATH
|
||||||
|
|
||||||
|
if (req := http.current_request.get()) is None:
|
||||||
|
raise RuntimeError("No current request in context")
|
||||||
|
|
||||||
|
if (ha_host := req.headers.get(HEADER_FRONTEND_BASE)) is None:
|
||||||
|
raise RuntimeError("No header in request")
|
||||||
|
|
||||||
|
return f"{ha_host}{AUTH_CALLBACK_PATH}"
|
||||||
|
|
||||||
|
|
||||||
class AbstractOAuth2Implementation(ABC):
|
class AbstractOAuth2Implementation(ABC):
|
||||||
"""Base class to abstract OAuth2 authentication."""
|
"""Base class to abstract OAuth2 authentication."""
|
||||||
|
|
||||||
@ -144,16 +159,7 @@ class LocalOAuth2Implementation(AbstractOAuth2Implementation):
|
|||||||
@property
|
@property
|
||||||
def redirect_uri(self) -> str:
|
def redirect_uri(self) -> str:
|
||||||
"""Return the redirect uri."""
|
"""Return the redirect uri."""
|
||||||
if "my" in self.hass.config.components:
|
return async_get_redirect_uri(self.hass)
|
||||||
return MY_AUTH_CALLBACK_PATH
|
|
||||||
|
|
||||||
if (req := http.current_request.get()) is None:
|
|
||||||
raise RuntimeError("No current request in context")
|
|
||||||
|
|
||||||
if (ha_host := req.headers.get(HEADER_FRONTEND_BASE)) is None:
|
|
||||||
raise RuntimeError("No header in request")
|
|
||||||
|
|
||||||
return f"{ha_host}{AUTH_CALLBACK_PATH}"
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def extra_authorize_data(self) -> dict:
|
def extra_authorize_data(self) -> dict:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user