桌面应用的OAuth?

时间:2010-09-19 02:48:27

标签: oauth

我想知道没有任何域名的桌面应用程序如何使用oauth?或者它不应该以这种方式使用?如果是的话我该怎么用?对tumblr说他们有一个authentication api所以我必须将用户名和密码放在url / query字符串中?

我正在考虑使用WPF / Adob​​e AIR。像tweetdeck这样的东西有用吗?

6 个答案:

答案 0 :(得分:11)

我一直对关于缺少域名或应用网址的同一问题感到困惑,但事实证明重定向并不是完成OAuth身份验证过程的唯一可行方法。

即,当webapp请求访问时,它提供回调URL:当进程完成时,一个用户将被重定向到。这就是webapp知道一切都已完成的方式。

但是您无法在用户的计算机上重定向到应用程序。因此,还有另一种方法:成功验证服务器向用户提供特殊代码。然后用户复制此代码并将其提供给应用程序。

您可以看到specification draft中描述的两种方式 此外,此身份验证的here's an example与twitter一起流动。

答案 1 :(得分:2)

您应首先阅读有关OAuth入门的内容。最终,即使是桌面应用程序也会打开一个浏览器窗口来验证用户 - TweetDeck和其他Twitter客户端会这样做,正如您可能已经注意到的那样。

在您的示例中,Tumblr不使用OAuth,而是通过简单的HTTP Web请求执行基本身份验证。

答案 2 :(得分:2)

看起来有可能,请参阅有关该主题的Google文档:

https://developers.google.com/accounts/docs/OAuth2

答案 3 :(得分:1)

Twitter不希望用户将凭据输入您的应用程序。因此,在某些时候,桌面应用程序将需要打开一个浏览器窗口,通过该窗口,Twitter可以对其用户进行身份验证并返回表示用户的访问令牌。从那时起,桌面应用程序可以使用访问令牌在Twitter的所有后续API调用中表示用户。

答案 4 :(得分:0)

在桌面环境中,您还有另一种获取令牌的方法,即浏览器打开网址。

OAuth2服务器会将用户浏览器重定向到重定向URL,并将令牌作为查询参数,因此,如果您控制使用的浏览器,则可以直接从用户重定向到的URL读取令牌。

像GKT +这样的图形库具有集成选项来创建用户可用于进行身份验证的迷你浏览器,并且它会自动将令牌返回给应用程序,但其他选项也是可能的,例如阅读Firefox网址。

答案 5 :(得分:0)

对于需要用户进行身份验证的桌面应用程序,通常需要使用“授权”代码流。

方法大致如下:

  1. 设置一个临时的Web服务器,以监听回送接口
  2. 将登录页面呈现给用户(在嵌入式浏览器控件或外部浏览器中),您的临时网络服务器的网址为redirect_url
  3. 成功登录后,用户将被重定向到您的临时Web服务器,您可以从code查询参数中获取访问代码
  4. 使用访问代码,您可以获得令牌并开始使用令牌进行请求
  5. 关闭临时网络服务器

请注意,您必须在身份提供者中允许order中使用localhost作为重定向URL,此方法才能起作用。

有关更多详细信息,请查看Google的these sample apps