我正在编写 Teams-Slack 集成。重点是在 MS Teams 中定义我们的类次,并根据轮类人员更改某些 Slack channel 的描述。
无论如何,Slack 端都已完成,但我在使用 Teams 及其 API 时遇到了很多问题。
首先,这是我的主要资源:https://learn.microsoft.com/en-us/graph/api/schedule-list-shifts?view=graph-rest-beta
好的,这就是我已经完成的。
- 我已经在 Azure 中注册了我的机器人并且我有一个 ID
- 我已授予机器人所需的权限
- 我找到了我们轮类的 Teams 组 ID
这是手工完成的过程:
当我导航到此 URL(不使用 Python)时,我到达一个页面,让我确认我的 O365 用户。 (当 Python 尝试这样做时,它要求完成登录)
- 然后我被重定向到带有参数 code=SOMECODEHERE 的本地主机页面
- 然后我获取此代码并使用 Postman 在 POST 请求中发送它以获取我的访问 token :
- 然后我使用这个不记名访问 token 来拉类。
这是我的问题/问题:
- 当我最终获得包含所有团队成员类次的 JSON 文件时,它只显示 1 个月之前和之前的类次。又名今天是 22-04-2019,我能看到的最后一个类次是 22-03-2019。
- JSON 也不会显示谁在值类或待命。我的意思是,我可以看到 20-02-2019 有类次,但它不会为该类次的成员返回任何 UID 或名称。有什么办法可以找到它吗?
- 有什么方法可以用 python 获取“code=”值吗?它要求它登录(因为它要求我确认我的 O365 用户 - 请参见第二张图片)。我真的需要硬编码我自己的登录详细信息以便机器人可以导航到页面吗?那是愚蠢的我。我知道我可以阅读重定向的 URL,但我什至无法到达那里。
最佳答案
这只是您第三个问题的答案。我看看能不能找到能回答前两个问题的人。
您正在访问的 API 使用委派权限,这意味着您正在代表登录用户进行访问。当用户登录时,会验证他们的身份,一旦验证通过,Azure AD 就会返回代码,您可以交换访问 token 。因此,根据定义,没有用户登录就无法获取代码。
还有另一种权限,即应用程序权限,此 API 不支持此权限,但如果支持,则可以按您希望的方式工作。我也会问这个。
关于python - 我从 Graph API 得到不完整的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55793759/