gpt4 book ai didi

c# - 使用 BotAuth 时如何正确注销

转载 作者:行者123 更新时间:2023-11-30 15:55:43 26 4
gpt4 key购买 nike

在使用 BotAuth 时,注销现有登录用户的正确方法是什么?在 AuthBot ,这是使用 await context.Logout(); 完成的。

关于 BotAuth code ,我发现以下代码执行注销,但它未在任何示例中显示。

public async Task Logout(AuthenticationOptions authOptions, IDialogContext context)
{
context.UserData.RemoveValue($"{this.Name}{ContextConstants.AuthResultKey}");
context.UserData.RemoveValue($"{this.Name}{ContextConstants.MagicNumberKey}");
context.UserData.RemoveValue($"{this.Name}{ContextConstants.MagicNumberValidated}");
string signoutURl = "https://login.microsoftonline.com/common/oauth2/logout?post_logout_redirect_uri=" + System.Net.WebUtility.UrlEncode(authOptions.RedirectUrl);
await context.PostAsync($"In order to finish the sign out, please click at this [link]({signoutURl}).");
}

在调用上述函数时,尽管清除了用户数据,但出现以下错误: enter image description here这是正确的注销方式吗?

最佳答案

我发现在我执行注销操作后,返回 URL 将是 http://localhost:3979/Callback(没有任何查询字符串),在 the source code of botauth 中,我发现它直接返回了状态为 BadRequest 的异常:

[HttpGet]
[Route("Callback")]
public async Task<HttpResponseMessage> Callback()
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, new Exception());
}

我做了一个测试,用下面的代码修改这个 Callback,它在我这边按预期工作。

[HttpGet]
[Route("Callback")]
public async Task<HttpResponseMessage> Callback()
{
//return Request.CreateErrorResponse(HttpStatusCode.BadRequest, new Exception());

var resp = new HttpResponseMessage(HttpStatusCode.OK);
resp.Content = new StringContent("<html><body>Logout success</body></html>", System.Text.Encoding.UTF8, @"text/html");
return resp;
}

测试结果:

enter image description here

关于c# - 使用 BotAuth 时如何正确注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48116847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com