gpt4 book ai didi

c# - 使用 C# 桌面应用程序的 OAuth 用户代理流程

转载 作者:太空狗 更新时间:2023-10-29 23:09:39 24 4
gpt4 key购买 nike

我目前正在尝试将 OAuth 2.0 用户代理流程与客户端 C# 应用程序一起使用,但我遇到了一些与重定向 URI 相关的困惑。

因为我正在使用客户端应用程序,所以我无法向网络服务器提供标准的重定向 URL。但是,根据我尝试验证身份的人员(在本例中为 Salesforce)的说法,用户代理流程是用于客户端应用程序的正确流程。

我的问题是,在这种情况下我该怎么做才能捕获访问 token ?显然我可以创建一个“客户端可以访问的本地资源”,但我不熟悉这背后的机制,而且我找不到关于该主题的任何资源(部分原因是我不知道要查找什么)。

任何关于我应该从哪里开始寻找的指示都将不胜感激。


编辑:更多挖掘揭示了以下 stackoverflow 问题:

How do I develop against OAuth locally?

我正在根据他们的建议进行更多调查,但任何其他建议也很好。


编辑:更多搜索显示这篇文章:

http://sarangasl.blogspot.com/2010/09/create-simple-web-service-in-visual.html

仍然感觉我在黑暗中摸索,不了解大局,但我相信我需要使用 localhost 设置本地 Web 服务并将我的重定向 URI 指向那里。然后,我将使用我的 Web 服务来解包来自 OAuth 服务器的响应,并让我的应用程序做出适当的响应。更多更新即将到来。


好的。因此,根据我收集到的信息,我需要设置一个本地 Web 服务作为 OAuth 的回调。我需要自己收听所述网络服务并捕获回调以将其传递给我的应用程序。但是,VS2010 提供的默认 ASP.NET Web 服务不支持 URL 参数,仅支持 API 调用,因此我显然需要改用 WCF Rest 入门工具包。

我对这一切完全陌生,所以此时任何提示都是天赐之物。一般来说,我想我设置一个本地 WCF Rest 服务,将该本地 URI 作为回调提供给 OAuth,然后使用 Rest 服务捕获回调 URL。然后我解析 URL 并提取访问 token 。此时,我的应用程序是否请求访问 token ,或者我的网络服务是否可以将 token “提供”给我的应用程序?即,控制点应该在哪里?

最佳答案

想出了一个聪明的方法来解决这个问题。我没有设置服务来监听 OAuth 的重定向 URL,而是在我的 Windows 窗体中嵌入了一个 WebBrowser 控件。

我将此嵌入式 WebBrowser 指向身份验证 URL,让用户登录并使用 Salesforce 进行身份验证,并授予对我的应用程序的权限。然后,我让 Salesforce 将我的嵌入式浏览器重定向到我提供的虚拟重定向 URL。这个重定向实际上不会去任何地方,它只是显示为 404。

但是,通过监视 WebBrowser.Url,我可以获取我的嵌入式 WebBrowser 控件指向的整个 URL,包括 Salesforce 附加的访问 token 。基本上,在用户进行身份验证并授予权限后,嵌入式浏览器将重定向到“http://www.dummyurl.com”。 Salesforce 附加访问 token ,因此 WebBrowser.Url 最终看起来像这样:

http://www.dummyurl.com#access_token=ABCDEF&instance_url=ABCDEF

从这里开始,我可以只解析 URL 并继续前进。无需第三方网络服务器或本地网络服务。 :)

关于c# - 使用 C# 桌面应用程序的 OAuth 用户代理流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10835100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com