【发布时间】:2023-02-02 11:15:51
【问题描述】:
我通过自定义 Teams 工具包中的 SSO React 应用程序示例创建了一个 Teams 选项卡应用程序。该应用程序将用户重定向到我们的网站(在其中一个选项卡内)。我可以在 React (teamsfx.getCredentials().getToken("")) 中获取 id-token,并通过查询参数将其传递给我们的 Web 应用程序。
这个 id-token 经过验证,然后传递到构成我们后端的各种微服务。
这部分运行良好,但随后,我们需要刷新令牌。因此,我们决定让 Web 应用程序(用 Angular 编写)使用 @microsoft/teamsfx 和 @microsoft/teams-js npm 包获取令牌。
虽然我不确定这是否是要走的路,但当我在角度服务中执行以下代码时,它会抛出“SDK初始化超时“ 错误。
try {
const teamsFx: TeamsFx = new TeamsFx(IdentityType.User, {
"clientId": "ee89fb47-a378-4096-b893-**********",
"objectId": "df568fe9-3d33-4b22-94fc-**********",
"oauth2PermissionScopeId": "4ce5bb24-585a-40d3-9891-************",
"tenantId": "5d65ee67-1073-4979-884c-**************",
"oauthHost": "https://login.microsoftonline.com",
"oauthAuthority": "https://login.microsoftonline.com/5d65ee67-1073-4979-884c-****************",
"applicationIdUris": "api://localhost/ee89fb47-a378-4096-b893-***************",
"frontendEndpoint": "https://localhost",
"initiateLoginEndpoint": "https://localhost:8101"
});
const creds = await teamsFx.getCredential().getToken('https://graph.microsoft.com/User.Read');
const token = creds?.token;
console.log("New Token: ", token);
const expirationTimestamp = creds?.expiresOnTimestamp;
this.scheduleRefresh(expirationTimestamp);
this.tokenRefreshed.next({ token: token, expiresOnTimestamp: expirationTimestamp });
}
catch (error) {
console.error("Error in getNewTeamsToken(): ", error);
}
我在这里遗漏了什么,或者方法本身是错误的吗?请指教。
【问题讨论】:
标签: microsoft-teams teams-toolkit microsoft-teams-js