如何正确注销 Teams BotFramework OauthPrompt?
How to properly logout from Teams BotFramework OauthPrompt?
我有一个使用多个通用 Oauth2 提供程序的 c# Teams 机器人。
作为示例,我使用了此示例 https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/csharp_dotnetcore/46.teams-auth
我还向 Azure 中的机器人注册添加了通用 OAuth2。使用单个 Oauth 提供程序一切正常。
注销过程后的用户必须能够向另一个 oauth2 提供程序进行身份验证。
但是我遇到了 OauthPrompt 缓存以前的凭据的问题,我不知道如何清除此缓存并正确注销用户
我已经尝试过不同的方法来注销用户:
- 使用 UserTokenClient
var userTokenClient = innerDc.Context.TurnState.Get<UserTokenClient>();
await userTokenClient.SignOutUserAsync(innerDc.Context.Activity.From.Id, connectionName,
innerDc.Context.Activity.ChannelId, cancellationToken).ConfigureAwait(false)
- 使用 OauthPrompt 对话框
var oauth = (OAuthPrompt)Dialogs.Find(nameof(OAuthPrompt));
if (oauth != null)
{
await oauth.SignOutUserAsync(innerDc.Context, cancellationToken: cancellationToken);
}
--使用BotFrameworkAdapter
await botAdapter.SignOutUserAsync(innerDc.Context, connectionName, cancellationToken: cancellationToken);
请帮忙
发现问题。
Bot 在服务中注册为单例 (services.AddSingleton <..>),并且在瀑布步骤中添加了 OauthPrompt 对话框,但未处理。
我为每个通用 OAuth 创建了不同的 OauthPrompts,并通过对话框构造函数添加到对话框中。并根据用户提示选择正确的 OauthPrompt
AddDialog(new OAuthPrompt("1",
new OAuthPromptSettings
{
ConnectionName = "1",
Text = "Please Sign In",
Title = "Sign In",
Timeout = 300000, // User has 5 minutes to login (1000 * 60 * 5)
}));
AddDialog(new OAuthPrompt("2",
new OAuthPromptSettings
{
ConnectionName = "2",
Text = "Please Sign In",
Title = "Sign In",
Timeout = 300000, // User has 5 minutes to login (1000 * 60 * 5)
}));
我有一个使用多个通用 Oauth2 提供程序的 c# Teams 机器人。 作为示例,我使用了此示例 https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/csharp_dotnetcore/46.teams-auth
我还向 Azure 中的机器人注册添加了通用 OAuth2。使用单个 Oauth 提供程序一切正常。
注销过程后的用户必须能够向另一个 oauth2 提供程序进行身份验证。 但是我遇到了 OauthPrompt 缓存以前的凭据的问题,我不知道如何清除此缓存并正确注销用户
我已经尝试过不同的方法来注销用户:
- 使用 UserTokenClient
var userTokenClient = innerDc.Context.TurnState.Get<UserTokenClient>();
await userTokenClient.SignOutUserAsync(innerDc.Context.Activity.From.Id, connectionName,
innerDc.Context.Activity.ChannelId, cancellationToken).ConfigureAwait(false)
- 使用 OauthPrompt 对话框
var oauth = (OAuthPrompt)Dialogs.Find(nameof(OAuthPrompt));
if (oauth != null)
{
await oauth.SignOutUserAsync(innerDc.Context, cancellationToken: cancellationToken);
}
--使用BotFrameworkAdapter
await botAdapter.SignOutUserAsync(innerDc.Context, connectionName, cancellationToken: cancellationToken);
请帮忙
发现问题。 Bot 在服务中注册为单例 (services.AddSingleton <..>),并且在瀑布步骤中添加了 OauthPrompt 对话框,但未处理。 我为每个通用 OAuth 创建了不同的 OauthPrompts,并通过对话框构造函数添加到对话框中。并根据用户提示选择正确的 OauthPrompt
AddDialog(new OAuthPrompt("1",
new OAuthPromptSettings
{
ConnectionName = "1",
Text = "Please Sign In",
Title = "Sign In",
Timeout = 300000, // User has 5 minutes to login (1000 * 60 * 5)
}));
AddDialog(new OAuthPrompt("2",
new OAuthPromptSettings
{
ConnectionName = "2",
Text = "Please Sign In",
Title = "Sign In",
Timeout = 300000, // User has 5 minutes to login (1000 * 60 * 5)
}));