[icloud] Rework authentication to reflect changes in iCloud API (#13691)
* Implement Authentication (WIP) * Validation Code accepted * Refactor session state * RefreshClient working * Implement session persistence in openhab store * Integration in binding * Remove persistent cookies, which break authentication * Bugfixing * Add code configuration to UI * Improve documentation, error-handling and cleanup * Rework auth order * Rework auth process * Add 2-FA-auth to documentation * Set bridge to online if data refresh works * Case-sensitive rename ICloudAPIResponseException * Include authentication in refresh flow * Fix regression for data not being updated * Fix typo in i18n props * Fix review and checkstyle. * More javadoc, new RetryException * Introduce @NonNullByDefault * Introduce server for RetryException, add NonNullbyDefault, fix warnings * Rework for contribution, e.g. null checks, ... * Fix checkstyle * Move JsonUtils to utilities package * Async initialize bridge handler. * Report Device OFFLINE if Bridge is OFFLINE * Set bridge thing status to UNKOWN in init * Move refresh init into async init * Cancel init task in dispose Also-by: Leo Siepel <leosiepel@gmail.com> Signed-off-by: Simon Spielmann <simon.spielmann@gmx.de>
This commit is contained in:
@@ -29,6 +29,12 @@ The account Thing, more precisely the account Bridge, represents one Apple iClou
|
||||
The account can be connected to multiple Apple devices which are represented as Things below the Bridge, see the example below.
|
||||
You may create multiple account Things for multiple accounts.
|
||||
|
||||
If your Apple account has 2-factor-authentication enabled configuration requires two steps.
|
||||
First start by adding the Apple ID and password to your account thing configuration.
|
||||
You will receive a notification with a code on one of your Apple devices then.
|
||||
Add this code to the code parameter of the thing then and wait.
|
||||
The binding should be reinitialized and perform the authentication.
|
||||
|
||||
### Device Thing
|
||||
|
||||
A device is identified by the device ID provided by Apple.
|
||||
@@ -62,7 +68,7 @@ The following channels are available (if supported by the device):
|
||||
### icloud.things
|
||||
|
||||
```php
|
||||
Bridge icloud:account:myaccount [appleId="mail@example.com", password="secure", refreshTimeInMinutes=5]
|
||||
Bridge icloud:account:myaccount [appleId="mail@example.com", password="secure", code="123456", refreshTimeInMinutes=5]
|
||||
{
|
||||
Thing device myiPhone8 "iPhone 8" @ "World" [deviceId="VIRG9FsrvXfE90ewVBA1H5swtwEQePdXVjHq3Si6pdJY2Cjro8QlreHYVGSUzuWV"]
|
||||
}
|
||||
@@ -76,14 +82,14 @@ The information _@ "World"_ is optional.
|
||||
```php
|
||||
Group iCloud_Group "iPhone"
|
||||
|
||||
String iPhone_BatteryStatus "Battery Status [%s]" <battery> (iCloud_Group) {channel="icloud:device:myaccount:myiPhone8:batteryStatus"}
|
||||
Number iPhone_BatteryLevel "Battery Level [%d %%]" <battery> (iCloud_Group) {channel="icloud:device:myaccount:myiPhone8:batteryLevel"}
|
||||
Switch iPhone_FindMyPhone "Trigger Find My iPhone" (iCloud_Group) {channel="icloud:device:myaccount:myiPhone8:findMyPhone", autoupdate="false"}
|
||||
Switch iPhone_Refresh "Force iPhone Refresh" (iCloud_Group) {channel="icloud:device:myaccount:myiPhone8:location", autoupdate="false"}
|
||||
Location iPhone_Location "Coordinates" (iCloud_Group) {channel="icloud:device:myaccount:myiPhone8:location"}
|
||||
Number iPhone_LocationAccuracy "Coordinates Accuracy [%.0f m]" (iCloud_Group) {channel="icloud:device:myaccount:myiPhone8:locationAccuracy"}
|
||||
String iPhone_BatteryStatus "Battery Status [%s]" <battery> (iCloud_Group) {channel="icloud:device:myaccount:myiPhone8:batteryStatus"}
|
||||
Number iPhone_BatteryLevel "Battery Level [%d %%]" <battery> (iCloud_Group) {channel="icloud:device:myaccount:myiPhone8:batteryLevel"}
|
||||
Switch iPhone_FindMyPhone "Trigger Find My iPhone" (iCloud_Group) {channel="icloud:device:myaccount:myiPhone8:findMyPhone", autoupdate="false"}
|
||||
Switch iPhone_Refresh "Force iPhone Refresh" (iCloud_Group) {channel="icloud:device:myaccount:myiPhone8:location", autoupdate="false"}
|
||||
Location iPhone_Location "Coordinates" (iCloud_Group) {channel="icloud:device:myaccount:myiPhone8:location"}
|
||||
Number iPhone_LocationAccuracy "Coordinates Accuracy [%.0f m]" (iCloud_Group) {channel="icloud:device:myaccount:myiPhone8:locationAccuracy"}
|
||||
DateTime iPhone_LocationLastUpdate "Last Update [%1$td.%1$tm.%1$tY, %1$tH:%1$tM]" <time> (iCloud_Group) {channel="icloud:device:myaccount:myiPhone8:locationLastUpdate"}
|
||||
Switch iPhone_Home "Phone Home" <presence> (iCloud_Group)
|
||||
Switch iPhone_Home "Phone Home" <presence> (iCloud_Group)
|
||||
```
|
||||
|
||||
### icloud.sitemap
|
||||
|
||||
Reference in New Issue
Block a user