如何使用 Graph 和 Python 访问 Outlook 联系人?

How can I access Outlook contacts using Graph and Python?

我正在尝试使用图表 API 和 Python 访问个人联系人。我可以让它适用于日历和活动,但找不到让它适用于联系人的方法。

除了一些非常过时的 Django 教程外,该网站没有提供任何 Python 解决方案。

我已经阅读了图表站点上的文档,并尝试编辑日历事件教程以满足我的需要,但我无法让它按照我的需要进行操作。

这是我得到的:

我获取联系人的代码:

def get_contacts_personal(token):

  graph_client = OAuth2Session(token=token)
  contacts = graph_client.get('{0}/me/contacts'.format(graph_url))

  return contacts.json()

还有我的 Django 视图代码:

def contacts(request):

  context = initialize_context(request)
  token = get_token(request)
  contacts = get_contacts_personal(token)

  if contacts:
    context['contacts'] = contacts['value']

  return render(request, 'tutorial/contacts.html', context)

我希望获得 json 数据,但我却收到关键字值错误。如果我删除它,我就得不到任何数据。

我确定我遗漏了一些明显的东西,希望有人能提供帮助!

描述了列出联系人端点here。它声明您需要委派(或申请)权限 Contacts.Read.

第一步是验证您的令牌(检查您的范围是否正确)。

复制令牌,并将其粘贴到 JWT.ms(这是一个 Microsoft 运行 网站,用于解释令牌中的内容。)如果您按 claims 选项卡,您将寻找 scp 声明。它应该包含 Contacts.ReadContacts.ReadWrite.

现在您有两个选择,所需的索赔已包含在内。然后我们需要更多关于您遇到的错误的详细信息。 或者不包含声明,那么您需要在 Azure 门户中(在 Azure AD -> 应用程序注册下)编辑应用程序权限。