问题描述:
我目前正在为 Microsoft Teams 开发一个扩展,使用 React.js 作为前端,使用 C# 作为后端,旨在管理许可证。该扩展打包为包含 manifest.json 的压缩文件,通过将其导入 Teams 来简化测试。但是,我遇到了 SSO(单点登录)身份验证错误的一致问题,但我一直无法解决。
重现问题的步骤:
1 在 Google Chrome 中,打开隐身窗口并导航至 https://dev.teams.microsoft.com/。 2 登录 Microsoft Teams 开发者平台 UI。 3 尝试通过 UI 使用压缩文件导入扩展。 4 尝试启动应用程序时,开发人员控制台中会显示与 SSO 相关的错误。
有趣的是,当我通过 admin.teams.microsoft.com 访问应用程序时,不会发生这些 SSO 错误。这种差异让我质疑问题的根本原因,特别是考虑到即将弃用经典 Teams,转而使用新版本。两个版本都存在该问题,这表明可能存在更复杂的潜在问题。
技术细节:
请求帮助:我寻求有关诊断和解决这些 SSO 身份验证错误的指导。深入了解此问题是否与我的身份验证流程、即将进行的 Teams 平台更新或可能需要更新 Teams SDK 版本有关,将非常有价值。任何 社区分享的建议或类似经验将极大地帮助解决此问题。预先感谢您的支持。
代码片段;
function initializeTeamsSdk(): Promise<void> {
return new Promise((resolve, reject) => {
microsoftTeams.initialize(() => {
console.log("Teams SDK initialized successfully.");
resolve();
});
});
}
async function AuthenticateWithSSO(): Promise<IAccessTokenRequestBody> {
await initializeTeamsSdk();
return new Promise((resolve, reject) => {
microsoftTeams.authentication.getAuthToken({
successCallback: (token: string) => {
try{
const decoded = jwtDecode(token);
const requestBody = {
tenantId: decoded.tid,
ssoToken: token,
clientId: decoded.aud,
};
SetClientId(requestBody.clientId);
SetSsoToken(requestBody.ssoToken);
SetTenantId(requestBody.tenantId);
microsoftTeams.appInitialization.notifySuccess();
resolve(requestBody);
}catch(error){
reject("Token decoding failed");
}
},
failureCallback: (error: string) => {
microsoftTeams.appInitialization.notifyFailure({
reason: microsoftTeams.appInitialization.FailedReason.AuthFailed,
message: error,
});
reject(error);
},
resources: [process.env.SSO_TAB_APP_URI as string],
});
});
}
我尝试从微软服务器获取 sso 令牌,但在微软团队环境的开放扩展期间未能检索到它,如上所述。我希望检索 sso 令牌并验证用户是否拥有许可证或不想打开应用程序,但在流程开始时,由于 sso 问题的响应,我无法成功加载应用程序。
我的应用程序中也有这个问题。有谁可以帮助我吗?