Apple iCloud 서비스

업데이트 됨

The API supports retrieval of a variety of data and files from Apple's iCloud services.

세션

API에서 iCloud 서비스에 대한 세션을 설정하는 것은 iCloud 계정에 로그인하는 것만큼이나 간단합니다. 계정에서 다중 요소 인증 (예 : 2FA 또는 2SV)을 사용하도록 설정 한 경우 세션을 만들 때 여러 번 시도해야 할 수 있습니다.

Creating a session for an account without 2FA/2SV

The session payload to create a session for an account without 2FA/2SV enabled contains the following parameters.

name type description
password string The iCloud account password.

cURL 사용

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>"
  }
}'

Response

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "succeeded",
  "error": null,
  ...
}

Creating a session for an account with 2FA

Creating a session for a 2FA enabled account is a two step process:

  1. Attempt to create a session using just the iCloud account password. This will trigger the 2FA process, which sends an authentication code to iOS and macOS devices associated with the account. The session creation attempt will fail with error="code-required".
  2. Use the iCloud account password and the authentication code received in (1) to create a session. If the code is accepted, the session will be successfully created.

Step 1: create session

name type description
password string The iCloud account password.

cURL 사용

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>"
  }
}'

Response

If the 2FA process is triggered as expected, the session should fail to be created with the error: code-required.

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "failed",
  "error": "code-required",
  ...
}

Step 2: create session with code

name type description
password string The iCloud account password.
code string The authentication code.

cURL 사용

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>"
  }
}'

Response

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "succeeded",
  "error": null,
  ...
}

Creating a session for an account with 2SV

The process to create a session for a 2SV enabled account has three steps:

  1. Attempt to create a session using the iCloud account password. As 2SV is required, this will fail with error="choice-required" and error_info={"choices": [<2SV enabled devices>]}.
  2. Attempt to create a session again using the iCloud account password and a choice from the error_info["choices"] list. This time, the attempt will trigger the 2SV process which sends an authentication code to the chosen device. The attempt will fail with error="code-required".
  3. Use the iCloud account password and the authentication code received in (2) to create a session. If the code is accepted, the session will be successfully created.

This will trigger the 2SV process, which sends an authentication code to iOS and macOS devices associated with the account. The session creation attempt will fail with error="code-required".

Step 1: create session

name type description
password string The iCloud account password.

cURL 사용

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>"
  }
}'

Response

If 2SV is enabled on the account, the session creation attempt will fail with error choice-required.

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "failed",
  "error": "choice-required",
  "error_info": {
    "choices": [
      "********02 - SMS to Phone Number"
    ]
  }
  ...
}

Step 2: create session with choice

name type description
password string The iCloud account password.
choice string The chosen device to send an authentication code to.

cURL 사용

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"
  }
}'

Response

If the 2FA process is triggered as expected, the session should fail to be created with the error: code-required.

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "failed",
  "error": "code-required",
  ...
}

Step 3: create session with code

name type description
password string The iCloud account password.
code string The authentication code.

cURL 사용

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>"
  }
}'

Response

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "succeeded",
  "error": null,
  ...
}

소스 유형

identifier description
icloud.account primary source Corresponds to an iCloud account.

투표소

iCloud 서비스는 모든 폴 페이로드 스키마 속성을 지원합니다.

소스 정보 검색

이 폴링 유형은 대상 소스에 대한 정보를 검색합니다. 결과는 JSON 형식으로 게시됩니다.

cURL 사용

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": ["*"]
  }
}'

* 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": ["*"]
  }
)

데이터 검색

이 폴링 유형은 대상 세션에서 데이터를 검색하고 처리합니다. 결과는 JSON 형식으로 게시됩니다.

특정 데이터 유형에 대한 자세한 정보 는 사용 가능한 데이터 유형 목록을 참조하십시오.

cURL 사용

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"]
    }
}'

* 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,
)

파일 검색 중

The files poll payload attribute is used to request the retrieval of binary files from the targeted source.

The IDs will typically be retrieved from a previous poll for data types that include direct file references, like iCloud Photo Library, or that include attachments, like message data types.

cURL 사용

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"
        ]
    }
}'

* 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,
)

자료형

iCloud 데이터 유형

식별자 기술
icpl.photos Retrieves iCloud Photo Library assets.
mme_contacts.contacts Retrieves iCloud stored iOS Contacts data.
mme_calendar.events Retrieves iCloud stored iOS Calendar data.
mme_notes.notes iCloud에 저장된 iOS Notes 데이터를 검색합니다.
callkit.calls CallKit 동기화 된 iOS 전화 데이터를 검색합니다.
cloudkit_safari.history iCloud에 저장된 Safari 브라우저 기록 데이터를 검색합니다.
fmip.devices 내 iPhone 장치 및 위치 데이터 찾기를 검색합니다.

iCloud Photo Library

Photos, videos and other media

Retrieves information on photos, videos and other media stored in iCloud Photo Library (ICPL).

This module requires that iCloud Photo Library is enabled on the user's iCloud account.

Data type ID icpl.photos
Associated setting Settings > [username] > iCloud > Photos > iCloud Photo Library

Data attributes

이름 유형 기술
id string An identifier for the data item. Useful for deduplicating data across multiple polls.
filename string The name of the file as it is stored in ICPL.
files list of image, video, audio items Files associated with this ICPL asset. The original file, Live Photos, thumbnails will be included in this list.
date_created datetime When the file was originally created. In the case of photos or videos taken on an iOS device, this will be the date when they were taken. In the case of existing assets imported to ICPL, this will be the original import date.
date_uploaded datetime When the file was last uploaded to ICPL. This will correspond to when the file was first retrievable via the ricloud API.

Data filters

name type description
since datetime Only includes items with a date_uploaded later than the provided value.
until datetime Only includes items with a date_uploaded earlier than the provided value.

Sample data

[
  {
    "id": "4d475a7bba2c604",
    "data_type": "icpl.asset",
    "filename": "IMG_0123.PNG",
    "files": [
      {
        "id": "icpl://ATnrIxddlwbCEjN33NBq8zXQwYgE",
        "data_type": "image",
        "extension": "png",
        "size": 119842,
        "width": 750,
        "height": 1334
      },
      {
        "id": "icpl://AcXwu8/wH8s6lfiGBDEZah6KzQjC",
        "data_type": "image",
        "extension": "jpg",
        "size": 210680,
        "width": 750,
        "height": 1334
      },
      {
        "id": "icpl://AbfMRXQ55H4WfS5YguuUWxir4hq6",
        "data_type": "image",
        "extension": "jpg",
        "size": 71032,
        "width": 310,
        "height": 554
      }
    ],
    "date_created": "2020-01-01T00:00:00.000000Z",
    "date_uploaded": "2020-01-01T00:00:00.000000Z"
  }
]

MobileMe Contacts

Contacts

Retrieves iOS Contacts data stored in iCloud.

Data type ID mme_contacts.contacts
Associated setting Settings > [username] > iCloud > Contacts

Data attributes

The mme_contacts.contact data type inherits most attributes from the base contact data type. The table below outlines additional or differing attributes.

이름 유형 기술
id string An identifier for the data item. Useful for deduplicating data across multiple polls.
data_type string, always mme_contacts.contact The data type of the item.
uid string A unique identifier that can be used to deduplicate across different sources of iOS Contacts data.
image nested image item, optional Profile image for the contact.

Sample data

[
  {
    "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 Calendar events mme_calendar.events

iCloud에 저장된 iOS 캘린더 데이터를 가져옵니다.

MobileMe Notes notes mme_notes.notes

iCloud에 저장된 iOS Notes 데이터를 검색합니다.

콜킷

CallKit callkit.calls 호출

CallKit 서비스와 동기화 된 통화 기록을 검색합니다.

오류

callkit-uninitialised

이 계정에 대해 CallKit 서비스가 설정되지 않았 음을 나타냅니다. iCloud 계정 소유자는 다음 단계를 통해 iCloud 계정과 연관된 iOS 장치를 사용하여이 오류를 해결할 수 있습니다.-장치가 Wi-Fi에 연결되어 있는지 확인하십시오. - Settings > [username] > iCloud . -iCloud Drive를 끄고 변경 사항이 적용되기를 30 ~ 60 초 동안 기다리십시오. -이전 변경이 완료되면 iCloud Drive를 켭니다. 초기화가 시작됩니다.

이 과정을 수행 한 후에도 오류가 지속되면 지원 부서에 문의하십시오.

callkit-sync-disabled

이 경우 CallKit 서비스가 초기화되었지만 기기가 iCloud에 통화 내역을 동기화하기 위해 필요한 조건이 충족되지 않았습니다. API는 iCloud를 통해이 문제를 원격으로 해결하지만 iCloud 계정과 연결된 기기는 캐시 된 상태이므로 동기화 상태를 재평가 할 수 없습니다.

iCloud 계정 소유자는 다음 단계를 통해 디바이스가 통화 기록 동기화 조건을 다시 확인하도록 트리거 할 수 있습니다.

  • Settings > [username] > iCloud .
  • iCloud Drive를 끄고 변경 사항이 적용되기를 30 ~ 60 초 동안 기다리십시오.
  • 이전 변경이 완료되면 iCloud Drive를 켭니다. 초기화가 시작됩니다.

문제 해결

  • 최근 통화 기록이 설문 조사 결과에 표시되지 않습니다.

이는 일반적으로 기기가 최신 통화 기록 레코드를 iCloud와 동기화하지 않았기 때문에 발생합니다. CallKit 서비스는 내부 iOS 서비스이며 설정에서 켜거나 끌 수 없거나 수동으로 동기화되도록 트리거 될 수 없습니다. 이로 인해 장치가 iCloud와 동기화되었거나 동기화되지 않았는지 여부가 불분명하여 누락 된 데이터를 디버그하는 것이 어려워 질 수 있습니다.

이 문제는 동기화 할 데이터가 많지 않은 계정 (~ 3 통화 미만)에 더 일반적이며, 이는 종종 계정 테스트의 경우 일 수 있습니다.

추천 :

  • 장치에 동기화 할 통화 기록 레코드가 몇 개 이상 있는지 확인하십시오. 테스트 결과 통화 기록 레코드가 두 개인 기기 만 iCloud 동기화 프로세스를 트리거하지 않는 것으로 나타났습니다.
  • 장치가 주기적 동기화를 수행 할 때까지 기다리십시오. 장치 사용 방법, 연결 상태 및 충전 상태에 따라 최대 12 시간이 걸릴 수 있습니다.
  • 장치를 전원에 연결하십시오. 이 상태에서는 장치가 동기화를 트리거 할 가능성이 높습니다.

  • 이전 통화 기록은 설문 조사 결과에 반환되지 않습니다.

CallKit 서비스는 장치간에 호출 기록 레코드를 동기화하고 이러한 레코드를 무기한 저장하지 않기 위해 설계되었습니다. 일반적으로 통화 기록 레코드는 CallKit에서 약 3 개월 동안 검색 할 수 있지만 iCloud의 내부 정리 프로세스에 따라 계정마다 다를 수 있습니다.

CloudKit

iCloud cloudkit_safari.history 브라우저 기록

iCloud 동기화 서비스에 저장된 Safari 브라우저 기록 데이터를 검색하십시오.

Find My and Find My iPhone

Device locations

Retrieve Find My device and location data.

Note that this data type may require multiple polls, with the second coming ~10-30 seconds after the first, in order to return complete data. This is due to how Find My operates: the first poll will trigger Find My to request new data from reachable devices but the data will not be available for another 10-30 seconds.

Data type ID fmip.devices
Associated setting Settings > [username] > Find My

Data attributes

이름 유형 기술
id string An identifier for the data item. Useful for deduplicating data across multiple polls.
data_type string, always fmip.devices The data type of the item.
name string The user set name for the device.
model_name string Apple's marketing name for the device model.
model_identifier string Apple's identifier for the device model.
product_type string The product category of the device.
location optional nested location The last reported location for the device, if one is available.
battery_status string The current battery status of the device.
battery_level float If known, the percentage battery charge remaining.

Sample data

[
  {
    "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
  }
]

파일 형식

identifier description
icpl A file from iCloud Photo Library.
mme_contact_image An mme_contacts.contacts contact profile image.

어떻게 도와 드릴까요?

지원 팀이 도와 드리겠습니다!

근무 시간은 월요일부터 금요일, 오전 9 시부 터 오후 5시 (그리니치 표준시)입니다. 시간은 현재 6:07 오전 GMT입니다.

우리는 1 일 이내에 모든 메시지에 답장하고자합니다.

지원 섹션으로 이동 › 엔터프라이즈 팀에 문의하십시오. ›
우리의 멋진 지원 팀

© 2008 - 2020 Reincubate Ltd. 판권 소유. 영국과 웨일즈에 등록 #5189175, VAT GB151788978. Reincubate®는 등록 상표입니다. 개인 정보 정책 & 자귀. 우리는 2FA를 권장합니다. 런던에서 Built로 지어졌습니다.