外部身份验证
默认情况下,前端会自行处理认证 token。如果没有找到 token,它会将用户重定向到登录页,并负责更新 token。
如果你想在外部应用中嵌入 Home Assistant 前端,你通常会希望将认证信息存储在应用内部,但同时让前端也能使用它。为支持这一点,Home Assistant 暴露了一个外部身份验证 API。
要激活这个 API,请在加载前端时在 URL 后附加 ?external_auth=1。传入该参数后,Home Assistant 会期望 window.externalApp(Android)或 window.webkit.messageHandlers(iOS)已定义,并且其中包含下文描述的方法。
获取 access token
该 API 于 Home Assistant 0.78 引入。
当前端加载时,它会向外部身份验证请求一个 access token。它会使用一个 options 对象调用以下方法之一。该 options 对象定义了一个回调方法,用于接收响应;还可以包含一个可选的 force 布尔值,当其为 true 时,无论 access token 是否已过期,都应强制刷新。
force 布尔值于 Home Assistant 0.104 引入,因此并不一定总是可用。
响应应包含一个表示是否成功的布尔值,以及一个对象,其中包含 access token 和它还能保持有效的秒数。请将响应传递给 options 对象中定义的函数。
当前端首次加载页面时,以及任何时候它需要一个有效 token 但之前收到的 token 已过期时,都会调用此方法。
撤销 token
该 API 于 Home Assistant 0.78 引入。
当用户在个人资料页面点击退出登录按钮时,外部应用必须撤销 refresh token,并将用户登出。
完成后,外部应用必须调用 options 对象中定义的函数。

