Ios 有没有办法用特定于应用程序的密码检索Apple DSID?

Ios 有没有办法用特定于应用程序的密码检索Apple DSID?,ios,authentication,authorization,caldav,Ios,Authentication,Authorization,Caldav,我正在做一个小项目,我想把我的苹果日历和我的网络应用程序完全同步。我使用python中的两个包(caldav和icalendar)来查看、创建、更新和删除事件,然后使用一些GraphQL来美化前端的数据。它目前运行得很好,但是如果我要把它推向生产,有一个大问题。在caldav包中,需要提供到客户端的链接。它看起来像这样: https://pXX-caldav.icloud.com/<DSID>/calendars 用你的苹果证书。这将为您返回大量有关您的帐户的有趣信息,包括DSID

我正在做一个小项目,我想把我的苹果日历和我的网络应用程序完全同步。我使用python中的两个包(caldav和icalendar)来查看、创建、更新和删除事件,然后使用一些GraphQL来美化前端的数据。它目前运行得很好,但是如果我要把它推向生产,有一个大问题。在caldav包中,需要提供到客户端的链接。它看起来像这样:

https://pXX-caldav.icloud.com/<DSID>/calendars
用你的苹果证书。这将为您返回大量有关您的帐户的有趣信息,包括DSID。不过,它只适用于你真实的苹果ID和密码,我不希望人们在苹果自己的网站之外的任何其他网站上输入这些信息。我尝试过使用我的应用程序专用密码来解决这个问题,但没有成功


有人知道如何避开这一点吗?如果真的没有可能的方法,那么我认为这个项目现在应该暂停。

经过长时间的研究,最简单的答案是:简单的“PROPFIND”——请求

导入请求
从bs4导入BeautifulSoup
卡尔达夫https://caldav.icloud.com'
用户名=
密码=
主体_query=“”\
"""
r=请求。请求(
“PROPFIND”,
url=caldav_url,
数据=主体查询,
auth=requests.auth.HTTPBasicAuth(用户名、密码),
headers={'Content-Type':'application/xml'},
)
soup=BeautifulSoup(r.text'lxml')
principal_extension=soup.find('current-user-principal').find('href').get_text()
打印(委托人扩展)
//->//委托人/

经过长时间的研究,最简单的答案是:简单的“PROPFIND”——请求

导入请求
从bs4导入BeautifulSoup
卡尔达夫https://caldav.icloud.com'
用户名=
密码=
主体_query=“”\
"""
r=请求。请求(
“PROPFIND”,
url=caldav_url,
数据=主体查询,
auth=requests.auth.HTTPBasicAuth(用户名、密码),
headers={'Content-Type':'application/xml'},
)
soup=BeautifulSoup(r.text'lxml')
principal_extension=soup.find('current-user-principal').find('href').get_text()
打印(委托人扩展)
//->//委托人/
https://setup.icloud.com/setup/ws/1/accountLogin
import requests
from bs4 import BeautifulSoup

caldav_url = 'https://caldav.icloud.com'
username = <APPLE_ID>
password = <APP_SPECIFIC_PASSWORD>

principal_query = """\
<?xml version="1.0" encoding="utf-8"?>
<propfind xmlns='DAV:'>
    <prop>
        <current-user-principal/>
    </prop>
</propfind>
"""

r = requests.request(
    'PROPFIND',
    url=caldav_url,
    data=principal_query,
    auth=requests.auth.HTTPBasicAuth(username, password),
    headers={'Content-Type': 'application/xml'},
    )

soup = BeautifulSoup(r.text, 'lxml')
principal_extension = soup.find('current-user-principal').find('href').get_text()

print(principal_extension)
// -> /<DSID>/principal/