我在这里阅读,我看到多条关于 /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