通过C# Management Api创建用户时,如何设置Auth0无密码邮件的redirect_uri?
我之前也碰到过这个问题!确实是redirect_uri为空导致的VerifyRedirect环节验证失败,Auth0对跳转地址的校验很严格,咱们一步步来搞定:
第一步:先在Auth0控制台添加允许的回调地址
首先得确保你要跳转的地址已经被Auth0认可。打开Auth0控制台,找到你对应的应用,进入"Settings"页面,在"Application URIs"区域的"Allowed Callback URLs"里,添加你实际要跳转的地址(比如https://your-app-domain.com/auth-callback)。这个地址必须和后面代码里填的完全一致,包括HTTP/HTTPS协议、域名、路径,大小写都不能错。第二步:在C#调用Management API时指定redirect_uri
如果你是用Auth0官方的Auth0.ManagementApi包发送无密码登录邮件,要在调用PasswordlessStartAsync方法的请求参数里明确设置RedirectUri。举个实际的代码例子:// 初始化Management API客户端 var managementClient = new ManagementApiClient( "你的Management API令牌", new Uri("https://你的Auth0域名/api/v2/") ); // 构建无密码登录请求 var passwordlessRequest = new PasswordlessStartRequest { ClientId = "你的应用Client ID", Connection = "email", // 用邮箱作为无密码登录的连接 Email = "要发送邮件的用户邮箱", RedirectUri = "https://your-app-domain.com/auth-callback", // 这里填刚才在控制台加的地址 Send = "link" // 指定发送登录链接而不是验证码 }; // 发送无密码登录邮件 await managementClient.Passwordless.StartAsync(passwordlessRequest);这样生成的邮件链接里就会带上正确的redirect_uri,Auth0就能通过VerifyRedirect的校验了。
额外排查点
如果你是在创建用户后自动触发的邮件(比如通过Auth0规则/动作),要检查触发邮件的逻辑里有没有传递redirect_uri。比如在Auth0动作中调用Passwordless Start端点时,同样要在请求体里加上redirect_uri参数。另外,确保你的Management API令牌拥有create:passwordless_tokens权限,不然可能无法正确传递这个参数。
内容的提问来源于stack exchange,提问作者Brian MacKay

