2

我在这里阅读,我看到多条关于 /pages 端点的消息没有按预期工作似乎 OneNote API(MS Graph 或 Office365)没有返回用户可以看到的所有页面。特别是最近的页面未显示为可用。

此消息适用于为 Microsoft 工作并密切关注此论坛的人。如果您对此有任何解释或解决方法,我们想听听。如果这项工作正在进行中,我们还想知道何时可以认为 API 足够稳定和可靠,可以认为它们可以用于生产用途

更新:

Permissions or scopes
    scopes=[
            "Notes.Read",
            "Notes.Read.All",
            "Notes.ReadWrite",
            ]

这适用于设备授权流程,设备充当 Microsoft Online 帐户。该应用程序作为个人应用程序注册到 Azure,但企业应用程序也是如此

此处描述了授权过程
我应该选择哪种类型的应用程序/身份验证流程来使用 Python 脚本和个人 Microsoft 帐户阅读我的云 OneNote 内容?

之后,我使用此端点获取笔记本
https://graph.microsoft.com/v1.0/users/user-id/onenote/notebooks

从返回的 json 中,我选择要读取的笔记本的端点,并访问存储在 notebook['sectionsUrl'] 中的链接的端点。此调用返回一个部分 json 从中我选择我想要的部分并访问存储在 section['pagesUrl'] 中的链接

当我在要探索的部分中获得任意少量页面时,每个调用都会返回除最后一个之外的预期信息。信息的格式没有问题,只是不完整或不是最新的

不确定这是否相关,但是当我尝试访问 MS Graph Explored 部分中的页面时,我看到了相同的行为(并非所有页面都被报告)。这是一个共享笔记本,我使用的是所有者帐户,所以这不应该是权限问题

    from msal import PublicClientApplication
    import requests
    endpoint= "https://graph.microsoft.com/v1.0/me/onenote"
    authority = "https://login.microsoftonline.com/consumers"
    app=PublicClientApplication(client_id=client_id, authority=authority)
    flow = app.initiate_device_flow(scopes=scopes)
    # there is an interactive part here that I automated using selenium, you 
    # are supposed to ouse a link to enter a code and then autorize the 
    # device; code not shown
    result = app.acquire_token_by_device_flow(flow)
    token= result['access_token']
    headers={'Authorization': 'Bearer ' + token}
    endpoint= "https://graph.microsoft.com/v1.0/users/c5af8759-4785-4abf-9434-xxxxxxxxx/onenote/notebooks"
    notebooks = requests.get(endpoint,headers=headers).json()
    for notebook in notebooks['value']:
        print(notebook['displayName']) 
        print(notebook['sectionsUrl']) 
        print(notebook['sectionGroupsUrl']) 
# I pick a certain notebook 
    section=[section for section in sections if section['displayName']=="Test"][0]
    endpoint=notebook['sectionsUrl']
    pages=requests.get(endpoint,headers=headers).json() 

    for page in pages['value']:
        print(page['title']) 

Update2 如果我使用此端点 https://graph.microsoft.com/v1.0/users/user-id/onenote/sections/section-id/pages 我希望获得该部分的完整页面列表。那是行不通的

一遍又一遍地阅读文档后,我的理解是,方法是调用https://graph.microsoft.com/v1.0/users/user-id/onenote/pages $ fiter 或搜索等

我这个对吗?另外我隐约记得有一种方法可以搜索一个部分并将其扩展,以便搜索也返回孩子。

我是否接近理解这一点?

谢谢MM

4

0 回答 0