Apple iCloud-service
De API ondersteunt het ophalen van verschillende gegevens en bestanden van Apple's iCloud-services.
Sessions
Het opzetten van een sessie voor de iCloud-services op de API is net zo eenvoudig als inloggen op een iCloud-account. Het proces kan meerdere pogingen vereisen om de sessie te maken als het account multi-factor authenticatie heeft ingeschakeld, zoals 2FA of 2SV.
Een sessie aanmaken voor een account zonder 2FA / 2SV
De sessielading om een sessie te maken voor een account zonder 2FA / 2SV ingeschakeld, bevat de volgende parameters.
naam | type | Omschrijving |
---|---|---|
password | draad | Het iCloud-accountwachtwoord. |
CURL gebruiken
curl https://ricloud-api.reincubate.com/sessions \ -X POST \ -H 'Authorization: Token <your key_token>' \ -H 'Content-Type: application/json' \ -d '{ "source": { "user": "1", "type": "icloud.account", "identifier": "<iCloud account username>" }, "payload": { "password": "<iCloud account password>" } }'
Reactie
{ "id": "<session ID>", "resource": "session", ... "state": "succeeded", "error": null, ... }
Een sessie aanmaken voor een account bij 2FA
Het maken van een sessie voor een 2FA-account is een proces in twee stappen:
- Probeer een sessie te maken met alleen het wachtwoord van het iCloud-account. Dit activeert het 2FA-proces, dat een authenticatiecode verzendt naar iOS- en macOS-apparaten die aan het account zijn gekoppeld. De poging tot het maken van een sessie mislukt met
error="code-required"
. - Gebruik het iCloud-accountwachtwoord en de authenticatiecode ontvangen in (1) om een sessie te creëren. Als de code wordt geaccepteerd, wordt de sessie met succes gemaakt.
Stap 1: maak een sessie
naam | type | Omschrijving |
---|---|---|
password | draad | Het iCloud-accountwachtwoord. |
CURL gebruiken
curl https://ricloud-api.reincubate.com/sessions \ -X POST \ -H 'Authorization: Token <your key_token>' \ -H 'Content-Type: application/json' \ -d '{ "source": { "user": "1", "type": "icloud.account", "identifier": "<iCloud account username>" }, "payload": { "password": "<iCloud account password>" } }'
Reactie
Als het 2FA-proces zoals verwacht wordt geactiveerd, mag de sessie niet worden gemaakt met de foutcode code-required
.
{ "id": "<session ID>", "resource": "session", ... "state": "failed", "error": "code-required", ... }
Stap 2: maak een sessie met code
naam | type | Omschrijving |
---|---|---|
password | draad | Het iCloud-accountwachtwoord. |
code | draad | De authenticatiecode. |
CURL gebruiken
curl https://ricloud-api.reincubate.com/sessions \ -X POST \ -H 'Authorization: Token <your key_token>' \ -H 'Content-Type: application/json' \ -d '{ "source": { "user": "1", "type": "icloud.account", "identifier": "<iCloud account username>" }, "payload": { "password": "<iCloud account password>", "code": "<authentication code>" } }'
Reactie
{ "id": "<session ID>", "resource": "session", ... "state": "succeeded", "error": null, ... }
Een sessie aanmaken voor een account met 2SV
Het proces om een sessie te maken voor een 2SV-account bestaat uit drie stappen:
- Probeer een sessie te maken met het wachtwoord van het iCloud-account. Aangezien 2SV vereist is, zal dit mislukken met
error="choice-required"
enerror_info={"choices": [<2SV enabled devices>]}
. - Probeer opnieuw een sessie te maken met het wachtwoord van het iCloud-account en een keuze uit de lijst
error_info["choices"]
. Deze keer zal de poging het 2SV-proces activeren dat een authenticatiecode naar het gekozen apparaat stuurt. De poging mislukt meterror="code-required"
. - Gebruik het iCloud-accountwachtwoord en de authenticatiecode ontvangen in (2) om een sessie te creëren. Als de code wordt geaccepteerd, wordt de sessie met succes gemaakt.
Dit activeert het 2SV-proces, dat een authenticatiecode verzendt naar iOS- en macOS-apparaten die aan het account zijn gekoppeld. De poging tot het maken van een sessie mislukt met error="code-required"
.
Stap 1: maak een sessie
naam | type | Omschrijving |
---|---|---|
password | draad | Het iCloud-accountwachtwoord. |
CURL gebruiken
curl https://ricloud-api.reincubate.com/sessions \ -X POST \ -H 'Authorization: Token <your key_token>' \ -H 'Content-Type: application/json' \ -d '{ "source": { "user": "1", "type": "icloud.account", "identifier": "<iCloud account username>" }, "payload": { "password": "<iCloud account password>" } }'
Reactie
Als 2SV is ingeschakeld op het account, mislukt de poging tot het maken van een sessie met een choice-required
foutkeuze.
{ "id": "<session ID>", "resource": "session", ... "state": "failed", "error": "choice-required", "error_info": { "choices": [ "********02 - SMS to Phone Number" ] } ... }
Stap 2: maak een sessie met keuze
naam | type | Omschrijving |
---|---|---|
password | draad | Het iCloud-accountwachtwoord. |
choice | draad | Het gekozen apparaat waarnaar een verificatiecode moet worden verzonden. |
CURL gebruiken
curl https://ricloud-api.reincubate.com/sessions \ -X POST \ -H 'Authorization: Token <your key_token>' \ -H 'Content-Type: application/json' \ -d '{ "source": { "user": "1", "type": "icloud.account", "identifier": "<iCloud account username>" }, "payload": { "password": "<iCloud account password>", "choice": "********02 - SMS to Phone Number" } }'
Reactie
Als het 2FA-proces zoals verwacht wordt geactiveerd, mag de sessie niet worden gemaakt met de foutcode code-required
.
{ "id": "<session ID>", "resource": "session", ... "state": "failed", "error": "code-required", ... }
Stap 3: maak een sessie met code
naam | type | Omschrijving |
---|---|---|
password | draad | Het iCloud-accountwachtwoord. |
code | draad | De authenticatiecode. |
CURL gebruiken
curl https://ricloud-api.reincubate.com/sessions \ -X POST \ -H 'Authorization: Token <your key_token>' \ -H 'Content-Type: application/json' \ -d '{ "source": { "user": "1", "type": "icloud.account", "identifier": "<iCloud account username>" }, "payload": { "password": "<iCloud account password>", "code": "<authentication code>" } }'
Reactie
{ "id": "<session ID>", "resource": "session", ... "state": "succeeded", "error": null, ... }
Brontypen
ID | Omschrijving |
---|---|
icloud.account | primaire bron Komt overeen met een iCloud-account. |
Polls
De iCloud-service ondersteunt alle kenmerken van het poll-payload-schema.
Broninformatie ophalen
Dit peilingtype haalt informatie over de beoogde bron op. De resultaten worden gepubliceerd in JSON-formaat.
CURL gebruiken
curl https://ricloud-api.reincubate.com/polls \ -X POST \ -H 'Authorization: Token <your key_token>' \ -H 'Content-Type: application/json' \ -d '{ "session": "<session ID>", "payload": { "info_types": ["*"] } }'
Gebruik van * ricloud-py *
import ricloud # The ID of a session we made earlier. session_id = "<session ID>" poll = ricloud.Poll.create( session=session_id, payload={ "info_types": ["*"] } )
Het ophalen van gegevens
Met dit polltype worden gegevens uit de beoogde sessie opgehaald en verwerkt. De resultaten worden gepubliceerd in JSON-indeling.
Zie de lijst met beschikbare gegevenstypen voor meer informatie over specifieke gegevenstypen.
CURL gebruiken
curl https://ricloud-api.reincubate.com/polls \ -X POST \ -H 'Authorization: Token <your key_token>' \ -H 'Content-Type: application/json' \ -d '{ "session": "<session ID>", "payload": { "data_types": ["icpl.photos"] } }'
Gebruik van * ricloud-py *
import ricloud # The ID of a session we made earlier. session_id = "<session ID>" poll_payload = { "data_types": ["icpl.photos"] } poll = ricloud.Poll.create( session=session_id, payload=poll_payload, )
Bestanden ophalen
Het kenmerk ' files
poll-payload' wordt gebruikt om het ophalen van binaire bestanden van de beoogde bron aan te vragen.
De ID's worden doorgaans opgehaald uit een eerdere peiling voor gegevenstypen die directe bestandsverwijzingen bevatten, zoals iCloud-fotobibliotheek, of die bijlagen bevatten, zoals berichtgegevenstypen.
CURL gebruiken
curl https://ricloud-api.reincubate.com/polls \ -X POST \ -H 'Authorization: Token <your key_token>' \ -H 'Content-Type: application/json' \ -d '{ "session": "<session ID>", "payload": { "files": [ "icpl://ATnrIxddlwbCEjN33NBq8zXQwYgE", "icpl://AbfMRXQ55H4WfS5YguuUWxir4hq6" ] } }'
Gebruik van * ricloud-py *
import ricloud # The ID of a session we made earlier. session_id = "<session ID>" poll_payload = { 'files': [ 'icpl://ATnrIxddlwbCEjN33NBq8zXQwYgE', 'icpl://AbfMRXQ55H4WfS5YguuUWxir4hq6', ] } poll = ricloud.Poll.create( session=session_id, payload=poll_payload, )
Datatypen
iCloud-gegevenstypen
identifier | Omschrijving |
---|---|
icpl.photos | Haalt iCloud-fotobibliotheekmiddelen op. |
mme_contacts.contacts | Haalt iCloud-opgeslagen gegevens van iOS-contacten op. |
mme_calendar.events | Haalt iCloud-opgeslagen iOS-kalendergegevens op. |
mme_notes.notes | Haalt iCloud opgeslagen iOS Notes-gegevens op. |
callkit.calls | Haalt gesynchroniseerde iOS Phone-gegevens op van CallKit. |
cloudkit_safari.history | Haal iCloud opgeslagen Safari-browsergeschiedenisgegevens op. |
fmip.devices | Find My iPhone-apparaat en locatiegegevens ophalen. |
iCloud-fotobibliotheek
Foto's, video's en andere media
Haalt informatie op over foto's, video's en andere media die zijn opgeslagen in iCloud-fotobibliotheek (ICPL).
Deze module vereist dat iCloud-fotobibliotheek is ingeschakeld op het iCloud-account van de gebruiker.
Gegevenstype-ID | icpl.photos |
Bijbehorende instelling | Settings > [username] > iCloud > Photos > iCloud Photo Library |
Data attributen
naam | type | Omschrijving |
---|---|---|
id | draad | Een ID voor het gegevensitem. Handig voor het ontdubbelen van gegevens over meerdere peilingen. |
filename | draad | De naam van het bestand zoals het is opgeslagen in ICPL. |
files | lijst met image , video , audio items | Bestanden die zijn gekoppeld aan dit ICPL-item. Het originele bestand, Live Photos, miniaturen worden in deze lijst opgenomen. |
date_created | datum Tijd | Toen het bestand oorspronkelijk was gemaakt. In het geval van foto's of video's die op een iOS-apparaat zijn gemaakt, is dit de datum waarop ze zijn gemaakt. In het geval van bestaande activa die naar ICPL zijn geïmporteerd, is dit de oorspronkelijke importdatum. |
date_uploaded | datum Tijd | Wanneer het bestand voor het laatst is geüpload naar ICPL. Dit komt overeen met wanneer het bestand voor het eerst op te halen was via de ricloud API. |
local_date_created |
optional datetime | When the asset was originally created, in local time. This attribute is only populated if sufficient metadata is stored with the asset in ICPL, and is currently supported for parsing by the API. The value of this attribute can vary by a few seconds from that of date_created , as the two are determined from different sources. |
Gegevensfilters
naam | type | Omschrijving |
---|---|---|
since | datum Tijd | Bevat alleen items met een date_uploaded later dan de opgegeven waarde. |
until | datum Tijd | Bevat alleen items met een date_uploaded eerder dan de opgegeven waarde. |
Voorbeeldgegevens
[ { "id": "7f1384f5038255f5", "data_type": "icpl.asset", "filename": "IMG_0002.HEIC", "files": [ { "id": "icpl://AWo/lDeN8fEExAUJajRHzVx2j605", "data_type": "image", "extension": "heic", "size": 905818, "width": 4032, "height": 3024 }, { "id": "icpl://ASDPdJ/LvFWjsBy4YOOp7B5c+XOi", "data_type": "video", "extension": "mov", "size": 2456163, "width": 980, "height": 1308 }, { "id": "icpl://ASAwWOvwrvAUuO71uXcU6mm+nMU4", "data_type": "image", "extension": "jpg", "size": 595624, "width": 1536, "height": 2048 }, { "id": "icpl://ATy/qmemCas1jzYWuhR4mQywhpzz", "data_type": "image", "extension": "jpg", "size": 65407, "width": 360, "height": 480 } ], "date_created": "2020-09-18T12:32:17Z", "date_uploaded": "2020-09-18T12:41:19Z", "local_date_created": "2020-09-18T13:32:17+01:00" } ]
MobileMe-contacten
Contacten
Haalt gegevens van iOS-contacten op die zijn opgeslagen in iCloud.
Gegevenstype-ID | mme_contacts.contacts |
Bijbehorende instelling | Settings > [username] > iCloud > Contacts |
Data attributen
Het gegevenstype mme_contacts.contact
neemt de meeste kenmerken over van het mme_contacts.contact
contact
. De onderstaande tabel geeft een overzicht van aanvullende of verschillende kenmerken.
naam | type | Omschrijving |
---|---|---|
id | draad | Een ID voor het gegevensitem. Handig voor het ontdubbelen van gegevens over meerdere peilingen. |
data_type | string, altijd mme_contacts.contact | Het gegevenstype van het item. |
uid | draad | Een unieke identificatie die kan worden gebruikt om te ontdubbelen over verschillende bronnen van gegevens van iOS-contacten. |
image | genest image , optioneel | Profielafbeelding voor het contact. |
Voorbeeldgegevens
[ { "id": "2cf6a837304d6614", "data_type": "mme_contacts.contact", "uid": "NzNlNjkxYjctOTBmYi00MTYxLWI5YzYtZTk0ZDlhZjljMmE5", "first_name": "John", "middle_name": "'Gala'", "last_name": "Appleseed", "prefix": "Mr.", "suffix": "Jr.", "nickname": "John'o", "records": [ { "type": "Phone", "name": "MAIN", "value": "1-800-MY-APPLE" }, { "type": "Phone", "name": "UK", "value": "0800 039 1010" }, { "type": "URL", "name": "HOMEPAGE", "value": "http://www.apple.com" }, { "type": "URL", "name": "HOMEPAGE", "value": "http://www.apple.com/uk/" }, { "City": "Cupertino", "State": "CA", "ZIP": "95014", "name": "WORK", "CountryCode": "US", "Country": "United States", "Street": "1 Infinite Loop", "type": "Address", "SubLocality": null, "Municipality": null } ], "organisation": "Apple Inc.", "department": "Marketing", "jobtitle": "VP Coring", "birthday": "1976-04-01", "image": { "id": "mme_contact_image://2cf6a837304d6614", "data_type": "image", "extension": "jpg" } } ]
MobileMe-agenda-evenementen mme_calendar.events
Haalt in iCloud opgeslagen iOS-agendagegevens op.
MobileMe Notes merkt mme_notes.notes
Haalt iCloud opgeslagen iOS Notes-gegevens op.
CallKit
Oproepen van CallKit callkit.calls
Haalt logboeken op die zijn gesynchroniseerd met de CallKit-service.
fouten
callkit-uninitialised
Geeft aan dat de CallKit-service niet is ingesteld voor dit account. De eigenaar van het iCloud-account kan deze fout oplossen met behulp van een iOS-apparaat dat is gekoppeld aan het iCloud-account via de volgende stappen: - Zorg ervoor dat het apparaat is verbonden met wifi. - Navigeer naar Settings > [username] > iCloud
. - Schakel iCloud Drive uit en wacht 30 tot 60 seconden totdat de wijziging van kracht wordt. - Schakel iCloud Drive in zodra de vorige wijziging is voltooid. Dit zou initialisatie moeten activeren.
Als de fout zich blijft voordoen nadat u dit proces hebt uitgevoerd, neemt u contact op met de ondersteuning.
callkit-sync-disabled
In dit geval is de CallKit-service geïnitialiseerd, maar er is niet voldaan aan de voorwaarden voor het synchroniseren van de oproepgeschiedenis met de iCloud. De API zal dit op afstand oplossen via de iCloud, maar het apparaat dat aan het iCloud-account is gekoppeld, evalueert mogelijk hun synchronisatietoestand niet, omdat dit in de cache is opgeslagen.
De iCloud-accounteigenaar kan een apparaat activeren om de synchronisatievoorwaarden van de oproepgeschiedenis opnieuw te controleren via de volgende stappen:
- Navigeer naar
Settings > [username] > iCloud
. - Schakel iCloud Drive uit en wacht 30 tot 60 seconden totdat de wijziging van kracht wordt.
- Schakel iCloud Drive in zodra de vorige wijziging is voltooid. Dit zou initialisatie moeten activeren.
Probleemoplossen
- Recente belgeschiedenis wordt niet geretourneerd in enquêteresultaten.
Dit wordt meestal veroorzaakt doordat het apparaat de nieuwste records voor de oproepgeschiedenis niet met de iCloud heeft gesynchroniseerd. De CallKit-service is een interne iOS-service en kan niet worden in- of uitgeschakeld in de instellingen of worden geactiveerd om handmatig te synchroniseren. Dit kan het opsporen van ontbrekende gegevens bemoeilijken omdat het onduidelijk is wat het apparaat al dan niet met de iCloud heeft gesynchroniseerd.
Dit probleem komt vaker voor bij accounts die niet veel gegevens hoeven te synchroniseren (minder dan ~ 3 oproepen), wat vaak het geval kan zijn bij het testen van accounts.
aanbevelingen:
- Zorg ervoor dat het apparaat meer dan een handvol records met oproepgeschiedenis heeft om te synchroniseren. Onze testen hebben aangetoond dat een apparaat met slechts enkele records van de belgeschiedenis het synchronisatieproces van iCloud niet zal activeren.
- Wacht tot het apparaat een periodieke synchronisatie uitvoert. Dit kan tot 12 uur duren, afhankelijk van hoe het apparaat wordt gebruikt, de verbindingsstatus en de oplaadstatus.
Steek de stekker in het stopcontact. Het apparaat zal eerder een synchronisatie activeren wanneer het zich in deze status bevindt.
Oude oproepgeschiedenis wordt niet geretourneerd in enquêteresultaten.
De CallKit-service is ontworpen voor het synchroniseren van oproepgeschiedenisrecords tussen apparaten en niet voor het voor onbepaalde tijd opslaan van deze records. Doorgaans zijn oproepgeschiedenisrecords haalbaar van CallKit gedurende ongeveer 3 maanden, maar dit kan variëren tussen accounts, afhankelijk van interne opschoonprocessen in de iCloud.
CloudKit
Browsergeschiedenis van iCloud cloudkit_safari.history
Ophalen van Safari-browsergeschiedenisgegevens die zijn opgeslagen in de iCloud-synchronisatieservice.
Zoek mijn en vind mijn iPhone
Apparaatlocaties
Vind mijn apparaat en locatiegegevens ophalen.
Merk op dat dit gegevenstype mogelijk meerdere peilingen vereist, met de tweede op ~ 10-30 seconden na de eerste, om volledige gegevens te retourneren. Dit komt door de manier waarop Find My werkt: de eerste peiling zal Find My activeren om nieuwe gegevens van bereikbare apparaten op te vragen, maar de gegevens zullen nog geen 10-30 seconden beschikbaar zijn.
Gegevenstype-ID | fmip.devices |
Bijbehorende instelling | Settings > [username] > Find My |
Data attributen
naam | type | Omschrijving |
---|---|---|
id | draad | Een ID voor het gegevensitem. Handig voor het ontdubbelen van gegevens over meerdere peilingen. |
data_type | string, altijd fmip.devices | Het gegevenstype van het item. |
name | draad | De door de gebruiker ingestelde naam voor het apparaat. |
model_name | draad | Apple's marketingnaam voor het apparaatmodel. |
model_identifier | draad | Apple's ID voor het apparaatmodel. |
product_type | draad | De productcategorie van het apparaat. |
location | optionele geneste location | De laatst gerapporteerde locatie voor het apparaat, indien beschikbaar. |
battery_status | draad | De huidige batterijstatus van het apparaat. |
battery_level | vlotter | Indien bekend, het percentage resterende batterijlading. |
Voorbeeldgegevens
[ { "id": "e7694d7a0d2ab6cf", "data_type": "fmip.device", "name": "John's iMac", "model_name": "iMac with Retina 5K display", "model_identifier": "iMac15,1", "product_type": "iMac", "location": null, "battery_status": "Unknown", "battery_level": 0.0 }, { "id": "4d86a6181808d152", "data_type": "fmip.device", "name": "John's iPhone 11", "model_name": "iPhone 11", "model_identifier": "iPhone6,2", "product_type": "iPhone", "location": { "data_type": "location", "latitude": 51.507452392689146, "longitude": -0.07398372304584414, "altitude": 0.0, "horizontal_accuracy": 65.0, "vertical_accuracy": 0.0, "positioning_type": "Wifi", "date_created": "2020-01-01T00:00:00.000000Z" }, "battery_status": "Unknown", "battery_level": 0.0 } ]
Bestand types
ID | Omschrijving |
---|---|
icpl | Een bestand uit de iCloud-fotobibliotheek. |
mme_contact_image | Een mme_contacts.contacts contactpersoon mme_contacts.contacts . |