这可能是一个重复的问题,但还没有答案。图书馆oauth-dot-net和DotNetOpenAuth都令人费解,这个主题似乎贯穿OAuth,而 OAuth with Verification in .NET具有指导性,更容易理解,它说
使用WebBrowser控件,然后在其中打开授权网页 桌面应用。当用户单击“允许”时,从中获取响应文本 WebBrowser控件,自动提取PIN,然后获取 访问令牌。您发送5或6个HTTP请求,但用户需要查看 只有一个允许/拒绝对话框。简单。
这是没有浏览器的OAuth吗?不,它不是。如果您使用Web浏览器调用URL并运行响应,它就可以工作,这是HTML,元刷新,noscript标签和javascript中基于浏览器的自动化的全能舞蹈奇迹。但我不想这样做。
微软,这是针对你的!我需要做纯REST,而不是 REST,除非它是javascript 。
我希望检索请求令牌,如OAuth RFC所述。一个 请求令牌,而不是软件认证机器人。 请求 TOKEN。
当我使用WebClient直接执行此GET
时GET /oauth20_authorize.srf?client_id=00000000400A9B87&scope=wl.signin%20wl.basic&response_type=code&redirect_uri=http%3a%2f%2fwhitehouse.podzone.net%2f HTTP/1.1
我找回了一个无法形容的机器生成的javascript混乱。对于Pete的爱,我想要一个该死的request_token,而不是一个javascript爱情。那么,我如何获得来自live.com的请求令牌?
我目前正在浏览由发送的HTML引用的模糊和压缩库,但它很重要。如果有人已经这样做了,我将非常感谢您的帮助。甚至可以指导如何在这个页面上劫持和追踪脚本,这可能会加快速度。
如果您正在检查GET,重定向URI http://whitehouse.podzone.net/将映射到我的家庭桌面计算机上的Web服务器,该计算机通常是正在调试的应用程序中的HttpListener,或者有时是IIS。这就是我处理重定向的方式(通常只是删除它,但很高兴知道事情已经走得那么远了。)
根据别人在Skydrive周围的工作,我做了一些短期的黑客攻击。它通过利用Skydrive应用程序为每个Live帐户预先批准的事实来避免这个问题。但是,这是一个黑客。我想正确地使用OAuth,它似乎不会那么实用。
尽管有一个非常勇敢的尝试来帮助Darin,我发现了一些我希望在第一天看到的东西,我留下了他的链接http://msdn.microsoft.com/en-us/library/live/hh826529.aspx(我的重点)
要实现客户端身份验证流程,桌面应用必须 使用Web浏览器控件。大多数开发语言包括这样的 控制。在这个例子中,我们的应用程序使用 System.Windows.Forms.WebBrowser类。 登录完成后,全部 后续的Live Connect API调用可以通过使用 System.Net.WebRequest类。使用Web浏览器控件启动 登录,传递类似于此的URL。
他们只希望我使用他们的机器人进行登录,因为放弃对交换的控制使得更难以跳过呈现用户干预机会。没有固有的原因我无法自己实施登录程序。他们的javascript可以发布的任何内容我可以使用WebClient发布。我可以做同样的加密。在道德层面上,如果用户不希望我的软件执行其操作,则很难显示用户名和密码。
我已经标记了达林的回答,因为他非常努力地帮助并提出了一些很好的东西,但我想我会坚持我的小黑客,这是令人失望的。
答案 0 :(得分:4)
您可以将implicit grant flow
与富客户端应用程序(grant_type=token
)一起使用。我们的想法是拥有一个WebBrowser控件,它通过重定向到live.com授权服务器并提供回调URL来启动身份验证流程。如果用户授权您的应用程序,live.com将重定向回回调网址并在网址中传递访问令牌:
http://contoso.com/Callback.htm#access_token=ACCESS_TOKEN
然后,您可以从WebBrowser检索URL的access_token
片段,并使用它来执行经过身份验证的请求。您不需要在WebBrowser中解析返回的内容。您需要做的是从URL中检索访问令牌。
还有authorization grant code flow
(grant_type=code
)更适合基于网络的应用。
您可以使用桌面应用程序查看following article
的完整示例。