如何在 microsoftTeams.authentication.authenticate() 方法中传递我需要的范围

How to pass the scopes I need in the microsoftTeams.authentication.authenticate() method

使用 vscode teams 工具包创建 teams-tab-app 后,我在默认的 auth-start.html 文件中看到脚本试图从 URL(由 microsoftTeams.authentication.authenticate() 方法构造),但是我没有在文档中看到任何关于如何在此方法中传递这些范围的参考。

有人知道如何传递这些范围吗?

我在查看工具包时自己也想知道这个问题,但我没有将它用于任何生产系统,所以从来没有费心去研究太深。我确实看到 useTeamsFx.tsx 是重定向到 startLoginPageUrl 的地方,所以大概你需要将 REACT_APP_START_LOGIN_PAGE_URL 设置为 auth-start.html 的路径,这样你就可以设置它也包含一个查询字符串。它需要应用程序 ID,因此您也需要设置它,但 useTeamsFx 也需要您也设置的 REACT_APP_CLIENT_ID。因此,将您想要的范围存储在您的代码或环境变量中,然后组合您发送到 initiateLoginEndpoint 的值可能是有意义的。基本上,而不是

var startLoginPageUrl = process.env.REACT_APP_START_LOGIN_PAGE_URL;
...
initiateLoginEndpoint: startLoginPageUrl
...

你可能会成功

var startLoginPageUrl = process.env.REACT_APP_START_LOGIN_PAGE_URL;
var scopes = process.env.REACT_APP_SCOPES;  // <-- this is added
...
initiateLoginEndpoint: `${startLoginPageUrl}?clientId=${clientId}&scope=${scopes}`
...

但这是未经测试的,所以不能保证。

在单独但相关的说明中,在我的示例项目中,在 auth-start 中,它指的是 MicrosoftTeams.min.js 的一个非常旧的版本(v 1.6,当前为 1.11)。我可能只有一个非常旧的 Teams Toolkit,但也许没有...