2016-06-01 117 views
1

对于使用桌面应用程序的人员,他们如何处理需要重定向url的第三方服务的oauth2流?oauth2重定向url如何为桌面应用程序工作?

我想通过Discord的oauth2登录认证用户。但我正在开发一个桌面应用程序,并且没有任何webservice。

我读过有关,看起来像重定向方案,

urn:ietf:wg:oauth:2.0:oob

但不和谐的说,这是通过的oauth2登录后非匹配重定向URL。

+0

我认为你需要为oauth2登录开发一个服务器端应用程序。实际上,Oauth2是为使用指定URL访问的基于互联网的应用程序制作的。桌面应用程序无法正常工作,因此无法集成Oauth2。 – Linh

回答

2

如果您使用的桌面应用程序,你有两个选择:

  1. 您可以在本地启动Web服务器,并使用localhost为redirectUri。缺点是您通常还需要在允许的重定向Uris列表中提供端口号,并且您不必知道客户端是否有某个端口可用。
  2. urn:ietf:wg:oauth:2.0:oob指示服务器根本不重定向用户,而是输出浏览器窗口标题中的代码。如果您有适当的权限来阅读其他Windows标题,那么您可以在那里自动检测更改。此外,代码通常会显示给用户,因此作为后备他可以复制&将代码粘贴到您的应用程序中。但是,您的服务可能不支持这一点。
  3. 设置一个web服务,为您转发令牌。基本上,您设置了一个web服务,您的应用程序通过该服务进行身份验证,并且webservice将身份验证服务的URL返回给您,其中包括向您向其发送用户的适当的state。然后,身份验证服务会将您的用户发送回您的web服务,该服务再次将代码报告给您的应用程序,例如通过长轮询,网络套接字或在整个过程中保持打开的真正的TCP连接。请注意,Web服务将需要谨慎的设计,以便该服务不会被第三方滥用。由于您无法通过Web服务在技术上验证您的桌面应用程序,因此无法阻止其他应用程序调用您的Web服务,但您可以在同意屏幕上向用户提供一些信息,以帮助用户确定请求是否合法。
+0

因此,如果我想重定向到iOS/OS X应用程序(如myapp:// oauth/callback),我需要webservice作为重定向到此URI的代理? –

相关问题