大家早上好!
上下文:
我正在组装一个OAuth处理程序,并且我几乎准备好按照OAuth身份验证流1.0图中的步骤E进行调用:https://wiki.fitbit.com/display/API/OAuth+Authentication+in+the+Fitbit+API#OAuthAuthenticationintheFitbitAPI-TheOAuthFlow
问题是所有的测试都在本地机器上进行,流的步骤D返回一个令牌和一个验证器。我无法在我的代码中访问这些项目,因为似乎没有一个URL缩短服务,将与多个返回参数正确工作(也没有好。我也不会http://para.ms/index.php这样做)。
然而,使用Fiddler,我可以查看令牌和验证者…只是不能从我的第一个回调方法中访问它们,因为参数被URL缩短服务剥离了。
我得到的想法是复制和粘贴这些项目到我的代码(通过某种类型的控制台输入,如console . readline),而它在调试器中运行,并继续处理步骤E与手动输入的值。然而,我似乎找不到一种方法来实际输入值到我的代码,因为它正在运行。调试器愉快地执行ReadLine命令,值仍然为空。
我看了一下如何让Visual c# studio识别键盘输入和其他几个谷歌结果,这些都与System.Windows.Forms有关。我不知道这是不是我应该使用的,或者是否有其他方式来获得键盘输入。
所以我的问题是:我如何从c# MVC的键盘输入,而VS2010调试器正在运行?如果有人知道可以让我的代码在本地机器上运行时访问这些值的替代方法或解决方法,我也欢迎任何建议。
提前感谢大家!——艾利
我不认为这是生产环境的现实方式,但我自己组装了一个OAuth 2客户端,并使用了由浏览器调用的自定义协议(即OAuth://?code=…)。这需要注册表项(其中"oauthclientcode"是协议名称):
[HKEY_CLASSES_ROOToauthclientcode]
@="URL:oauthclientcode Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOToauthclientcodeshell]
[HKEY_CLASSES_ROOToauthclientcodeshellopen]
[HKEY_CLASSES_ROOToauthclientcodeshellopencommand]
@=""C:\PATH_TO_EXE" authresponse %1"
浏览器将代码作为参数重定向到我的应用程序。然后在Main方法中解析输入。
如果感兴趣,OAuth2客户端的源代码:https://github.com/Excape/oAuth2TestClient