Apple iCloudサービス

更新しました
Cover image for: Apple iCloudサービス

APIは、AppleのiCloudサービスからのさまざまなデータとファイルの取得をサポートしています。

セッション

APIでiCloudサービスのセッションを設定することは、iCloudアカウントにログインするのと同じくらい簡単です。アカウントが2FAや2SVなどの多要素認証を有効にしている場合、プロセスはセッションの作成で複数回の試行を要求する可能性があります。

2FA / 2SVのないアカウントのセッションを作成する

2FA / 2SVが有効になっていないアカウントのセッションを作成するためのセッションペイロードには、次のパラメーターが含まれています。

名前タイプ解説
password ストリング iCloudアカウントのパスワード。

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

応答

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

2FAでアカウントのセッションを作成する

2FA対応アカウントのセッションの作成は、2つのステップのプロセスです。

  1. iCloudアカウントのパスワードだけを使用してセッションを作成してみてください。これにより、アカウントに関連付けられたiOSおよびmacOSデバイスに認証コードを送信する2FAプロセスがトリガーされます。セッションの作成は、 error="code-required"失敗しerror="code-required"
  2. (1)で受け取ったiCloudアカウントのパスワードと認証コードを使用して、セッションを作成します。コードが受け入れられると、セッションは正常に作成されます。

ステップ1:セッションを作成する

名前タイプ解説
password ストリング iCloudアカウントのパスワード。

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

応答

2FAプロセスが期待どおりにトリガーされた場合、セッションは次のエラーで作成に失敗するはずcode-requiredcode-required

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

ステップ2:コードでセッションを作成する

名前タイプ解説
password ストリング iCloudアカウントのパスワード。
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>"
  }
}'

応答

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

2SVでアカウントのセッションを作成する

2SV対応アカウントのセッションを作成するプロセスには、3つのステップがあります。

  1. iCloudアカウントのパスワードを使用してセッションを作成してみてください。 2SVが必要なため、これはerror="choice-required"およびerror_info={"choices": [<2SV enabled devices>]}失敗しerror="choice-required"
  2. iCloudアカウントのパスワードとerror_info["choices"]リストからの選択を使用して、セッションを再度作成してerror_info["choices"]ください。今回は、試行により、選択したデバイスに認証コードを送信する2SVプロセスがトリガーされます。試行はerror="code-required"失敗しerror="code-required"
  3. (2)で受け取ったiCloudアカウントのパスワードと認証コードを使用して、セッションを作成します。コードが受け入れられると、セッションは正常に作成されます。

これにより2SVプロセスがトリガーされ、アカウントに関連付けられたiOSおよびmacOSデバイスに認証コードが送信されます。セッションの作成は、 error="code-required"失敗しerror="code-required"

ステップ1:セッションを作成する

名前タイプ解説
password ストリング iCloudアカウントのパスワード。

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

応答

アカウントで2SVが有効になっている場合、セッションの作成はエラーchoice-required失敗します。

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

ステップ2:選択したセッションを作成する

名前タイプ解説
password ストリング iCloudアカウントのパスワード。
choice ストリング認証コードの送信先として選択されたデバイス。

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

応答

2FAプロセスが期待どおりにトリガーされた場合、セッションは次のエラーで作成に失敗するはずcode-requiredcode-required

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

ステップ3:コードでセッションを作成する

名前タイプ解説
password ストリング iCloudアカウントのパスワード。
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>"
  }
}'

応答

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

ソースタイプ

識別子解説
icloud.account プライマリソース iCloudアカウントに対応します。

アンケート

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

ファイルを取得する

files pollペイロード属性は、ターゲットソースからのバイナリファイルの取得を要求するために使用されます。

通常、IDは、iCloudフォトライブラリなどの直接ファイル参照を含むデータタイプ、またはメッセージデータタイプなどの添付ファイルを含むデータタイプの以前の投票から取得されます。

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 iCloudフォトライブラリアセットを取得します。
mme_contacts.contacts iCloudに保存されたiOS連絡先データを取得します。
mme_calendar.events iCloudに保存されたiOSカレンダーデータを取得します。
mme_notes.notes iCloudに保存されているiOS Notesデータを取得します。
callkit.calls CallKit同期iOS Phoneデータを取得します。
cloudkit_safari.history iCloudに保存されているSafariブラウザーの履歴データを取得します。
fmip.devices Find My iPhoneデバイスと位置データを取得します。

iCloudフォトライブラリ

写真、ビデオ、その他のメディア

iCloudフォトライブラリ(ICPL)に保存されている写真、ビデオ、その他のメディアに関する情報を取得します。

このモジュールでは、ユーザーのiCloudアカウントでiCloudフォトライブラリが有効になっている必要があります。

データ型ID icpl.photos
関連する設定 Settings > [username] > iCloud > Photos > iCloud Photo Library

データ属性

タイプ説明
id ストリングデータ項目の識別子。複数のポーリングにわたるデータの重複排除に役立ちます。
filename ストリング ICPLに保管されているファイルの名前。
files imagevideoaudioアイテムのリストこのICPLアセットに関連付けられているファイル。元のファイル、Live Photos、サムネイルがこのリストに含まれます。
date_created 日付時刻ファイルが最初に作成されたとき。 iOSデバイスで撮影された写真またはビデオの場合、これはそれらが撮影された日付になります。 ICPLにインポートされた既存のアセットの場合、これは元のインポート日になります。
date_uploaded 日付時刻ファイルが最後にICPLにアップロードされた日時。これは、ファイルがricloud APIを介して最初に取得できた時期に対応します。

データフィルター

名前タイプ解説
since 日付時刻指定された値より後のdate_uploaded持つアイテムのみが含まれます。
until 日付時刻提供された値より前のdate_uploaded持つアイテムのみが含まれます。

サンプルデータ

[
  {
    "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連絡先

連絡先

iCloudに保存されているiOSの連絡先データを取得します。

データ型ID mme_contacts.contacts
関連する設定 Settings > [username] > iCloud > Contacts

データ属性

mme_contacts.contactデータ型は、基本のcontactデータ型からほとんどの属性を継承します。以下の表に、追加または異なる属性の概要を示します。

タイプ説明
id ストリングデータ項目の識別子。複数のポーリングにわたるデータの重複排除に役立ちます。
data_type 文字列、常にmme_contacts.contact アイテムのデータ型。
uid ストリング iOS連絡先データのさまざまなソース間で重複排除に使用できる一意の識別子。
image ネストされたimageアイテム、オプション連絡先のプロフィール画像。

サンプルデータ

[
  {
    "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カレンダーイベントmme_calendar.events

iCloudに保存されているiOSカレンダーデータを取得します。

MobileMeノートノートmme_notes.notes

iCloudに保存されているiOS Notesデータを取得します。

CallKit

callkit.calls からの呼び出し callkit.calls

CallKitサービスと同期した通話記録を取得します。

エラー

callkit-uninitialised

このアカウントに対してCallKitサービスがセットアップされていないことを示します。 iCloudアカウントの所有者は、次の手順でiCloudアカウントに関連付けられたiOSデバイスを使用してこのエラーを解決できます。-デバイスがWi-Fiに接続されていることを確認します。 - Settings > [username] > iCloudます。 -iCloudドライブをオフにし、変更が有効になるまで30〜60秒待ちます。 -前の変更が完了したら、iCloudドライブをオンにします。これにより初期化がトリガーされます。

このプロセスを実行してもエラーが解決しない場合は、サポートに連絡してください。

callkit-sync-disabled

この場合、CallKitサービスは初期化されましたが、デバイスが通話履歴をiCloudに同期し始めるために必要な条件が満たされていません。 APIはiCloudを介してリモートでこれを解決しますが、iCloudアカウントに関連付けられているデバイスはこれがキャッシュされているため同期状態を再評価できない可能性があります。

iCloudアカウントの所有者は、次の手順でデバイスをトリガーして、通話履歴の同期条件を再確認できます。

  • Settings > [username] > iCloudます。
  • iCloud Driveをオフにして、変更が有効になるまで30〜60秒待ちます。
  • 前の変更が完了したら、iCloudドライブをオンにします。これにより初期化がトリガーされます。

トラブルシューティング

  • 最近の通話履歴は、投票結果に返されません。

これは通常、デバイスが最新の通話履歴レコードをiCloudと同期していないことが原因です。 CallKitサービスは内部iOSサービスであり、設定でオンまたはオフにしたり、手動で同期させることはできません。これにより、デバイスがiCloudと同期しているかどうかがわからなくなるため、失われたデータをデバッグすることが難しくなります。

この問題は、同期するデータがそれほど多くないアカウント(3回以内の呼び出し)でよく見られますが、これはアカウントのテストでよく見られることです。

推奨事項:

  • デバイスに同期する通話履歴レコードが少数あることを確認してください。私たちのテストでは、通話履歴レコードが数個しかないデバイスはiCloud同期プロセスをトリガーしないことが示されています。
  • デバイスが定期的な同期を実行するのを待ちます。これには、デバイスの使用方法、接続状態、充電状態に応じて、最大12時間かかります。
  • デバイスを電源に接続します。この状態の場合、デバイスは同期をトリガーする可能性が高くなります。

  • ポーリング結果で古い通話履歴が返されません。

CallKitサービスは、デバイス間で通話履歴レコードを同期するためのものであり、これらのレコードを無期限に保存するためのものではありません。通常、通話履歴レコードは約3ヶ月間CallKitから取得できますが、これはiCloudの内部クリーンアッププロセスによってアカウント間で異なる場合があります。

CloudKit

iCloudからのブラウザ履歴 cloudkit_safari.history

iCloud同期サービスに保存されているSafariブラウザの履歴データを取得します。

Find MyおよびFind My iPhone

デバイスの場所

デバイスの検索と位置データを取得します。

このデータ型では、完全なデータを返すために、2番目のポーリングが最初のポーリングの10秒後から10〜30秒後に複数のポーリングを必要とする場合があることに注意してください。これはFind Myの動作によるものです。最初のポーリングはFind Myをトリガーして、到達可能なデバイスから新しいデータを要求しますが、そのデータはさらに10〜30秒間利用できません。

データ型ID fmip.devices
関連する設定 Settings > [username] > Find My

データ属性

タイプ説明
id ストリングデータ項目の識別子。複数のポーリングにわたるデータの重複排除に役立ちます。
data_type 文字列、常にfmip.devices アイテムのデータ型。
name ストリングデバイスのユーザーセット名。
model_name ストリング Appleのデバイスモデルのマーケティング名。
model_identifier ストリング Appleのデバイスモデルの識別子。
product_type ストリングデバイスの製品カテゴリ。
location オプションのネストされたlocation デバイスの最後に報告された場所(利用可能な場合)。
battery_status ストリングデバイスの現在のバッテリー状態。
battery_level 浮くわかっている場合は、バッテリー残量のパーセンテージ。

サンプルデータ

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

ファイルタイプ

識別子解説
icpl iCloudフォトライブラリのファイル。
mme_contact_image mme_contacts.contacts連絡先のプロフィール画像。

どのように我々は助けることができます?

サポートチームがお手伝いします!

営業時間は月曜日から金曜日の午前9時から午後5時(GMT)です。 時間は現在 11:52 PM GMTです。

1営業日以内に、お返事を差し上げます。メールアドレスはこちら。

サポートセクションに移動 › エンタープライズチームに連絡する ›
私たちの素晴らしいサポートチーム

© 2008 - 2020 Reincubate Ltd. 無断複写・転載を禁じます。 イングランドとウェールズに登録 #5189175, VAT GB151788978. Reincubate®は登録商標です。 個人情報保護方針 & 条項. マルチファクタ認証をお勧めします。 ロンドンで愛と建てられた。