thisispiers / acloud
Apple iCloud服务的非官方PHP客户端
0.1.0
2023-03-22 12:43 UTC
Requires
- php: ^8
- guzzlehttp/guzzle: ^7.0
README
Apple iCloud服务的非官方PHP客户端。
Apple和iCloud是Apple Inc.的商标。
欢迎提交拉取请求以添加对服务的支持。
安装
composer require thisispiers/acloud
使用方法
用于登录的令牌和Cookies存储在传递给Session
构造函数的第一个参数指定的文件路径中。如果您需要覆盖此功能,请传递null
或空字符串,并使用getState()
和getHttpCookieJar()
。
如果登录需要验证码,则signIn()
将返回字符串"MFA"
或发送验证码的加密电话号码。从用户处获取验证码并将其传递给verifyMFACode()
。
在调用signIn()
和verifyMFACode()
后,请务必检查isSignedIn()
。
以下是一个基本示例
<?php require __DIR__ . '/vendor/autoload.php'; $acloud = new \thisispiers\Acloud\Session(__DIR__ . '/session'); if (!$acloud->isSignedIn()) { if (empty($_POST)) { ?> <form method="POST"> <p>Username: <input type="text" name="username"></p> <p>Password: <input type="password" name="password"></p> <button type="submit">Sign in</button> </form> <?php } else if (isset($_POST['username']) && isset($_POST['password'])) { $result = $acloud->signIn($_POST['username'], $_POST['password']); if ($signIn !== true) { if ($signIn === 'MFA') { echo '<p>Verification code sent to your device(s)</p>'; } else { echo '<p>Verification code sent to ' . htmlspecialchars($signIn) . '</p>'; } ?> <form method="POST"> Verification code: <input type="text" inputmode="numeric" name="verificationCode"> <button type="submit">Sign in</button> </form> <?php } } else if (isset($_POST['verificationCode'])) { $acloud->verifyMFACode($_POST['verificationCode']); if (!$acloud->isSignedIn()) { echo '<p>Verification code invalid. Please try again.</p>'; } } } if ($acloud->isSignedIn()) { $contacts = new \thisispiers\Acloud\Contacts($acloud); $allContacts = $contacts->list(); }
API
class Session { public function __construct(?string $path = ''); public function getHttpCookieJar(): \GuzzleHttp\Cookie\CookieJarInterface; public function loadState(?string $path = ''): bool; public function saveState(): bool; public function getState(): array; public function isSignedIn(): bool; public function signIn(string $username, string $password): true|string; public function sendMFACodeSMS(): false|string; public function verifyMFACode(string $code): bool; }
登录成功后,将Session
对象传递给服务类构造函数。
class Contacts { public function __construct(Session $session); public function list(): array; public function create(array $contacts): true; public function update(array $contacts): true; public function delete(array $contacts): true; }
阅读源代码以了解可能抛出的异常。
感谢
基于以下存储库