对于使用桌面应用程序的用户,他们如何处理需要重定向网址的第三方服务的 oauth2 流程?
我想通过Discord的oauth2登录验证用户身份。但我正在开发桌面应用程序,其背后没有Web服务。
我已经读过看起来像的重定向方案,
urn:ietf:wg:oauth:2.0:oob
但discord表示,通过oauth2 登录后,它是一个不匹配的重定向网址。
答案 0 :(得分:2)
如果您使用桌面应用程序,则有几个选择:
localhost
作为redirectUri。缺点是您通常还需要在允许的重定向Uris列表中提供端口号,并且您无需知道客户端上是否有某个端口。urn:ietf:wg:oauth:2.0:oob
指示服务器根本不重定向用户,而是输出浏览器窗口标题中的代码。如果您具有读取其他Windows标题的相应权限,则可以在那里自动检测更改。此外,代码通常会显示给用户,因此作为后备,他可以将代码复制并粘贴到您的应用程序中。但是,您的服务可能不支持此功能。state
。然后,身份验证服务会将您的用户发送回您的网络服务,再次向您的应用程序报告代码,例如通过长轮询,Web套接字或真正的TCP连接,在整个过程中保持打开状态。请注意,Web服务需要仔细设计,以免第三方滥用该服务。由于您无法在技术上对Web服务进行桌面应用程序身份验证,因此您无法阻止其他应用程序调用您的Web服务,但您可以在同意屏幕上向用户提供一些信息,以帮助用户确定请求是否合法。