繁体   English   中英

Auth0Client.LoginAsync()v4.x在C#WPF应用程序中不返回刷新令牌

[英]Auth0Client.LoginAsync() v4.x doesn't return refresh token in a C# WPF app

这是我的代码:

 var auth0 = new Auth0Client(
     Properties.Settings.Default.auth0Domain,
     Properties.Settings.Default.auth0ClientID);
 var handle = new WindowInteropHelper(this).Handle;
 var windowWrapper = new WindowWrapper(handle);

 var user = await auth0.LoginAsync(
     owner: windowWrapper, 
     scope: "openid profile", 
     withRefreshToken: true);

返回值包含一个空的刷新令牌。 我还尝试将设备参数设置为任意值,但这没有帮助。 我最近从Auth0 v3.x切换到v4.x。 Auth0 v3.x返回了刷新令牌。 在v4.x中有此突破吗? 如果不是,我需要怎么做才能获得刷新令牌?

您使用哪种身份提供者? -我用Microsoft Live和一个Google帐户尝试了这一点,并且效果很好。

登录/验证时,您是否在“用户”结果中填写了其他任何字段(没有提供任何详细信息/令牌)。

您可以这样尝试吗,即在范围内不使用“配置文件”。

 var user = await auth0.LoginAsync(
     owner: windowWrapper, 
     scope: "openid offline_access", 
     withRefreshToken: true,
     device: "my-device");

要么

 var user = await auth0.LoginAsync(
     owner: windowWrapper, 
     scope: "openid", 
     withRefreshToken: true,
     device: "my-device");

如果您具有withRefreshToken=true ,则在内部将"offline_access"附加到作用域名称上,这就是上述两种方法都可以withRefreshToken=true的原因。

您还需要为每个设备分别提供一个“ id”,以便可以为每个设备分配自己的刷新令牌。

当刷新令牌已经发出,它将在显示Dashboard - >在Users - >选择用于登录的用户认证身份- >然后在User Details - >选择Devices标签...这会显示有多少Number of Refresh Tokens已发行到您的设备。

在此处输入图片说明

如文档中所述,您不应该继续请求refresh_token。...仅在它们过期后才这样做(请参阅我对请求的需求超出了我的要求)-也许您达到了请求刷新令牌的限制。 。它只是返回一个“空”令牌代替...但是仍然让您的身份验证成功而没有错误....可能吗?

这是有关刷新令牌的文档(您可能已经知道了这一点,因为您必须在v3中使用过它)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM