在从oauth服务器获得代码之后,第二次调用Client.ProcessUserAuthorization();时,我得到了一个异常:Error occurred while sending a direct message or getting the response.
下面是使用log4net获取的日志文件的最后一部分,完整的日志记录在下面的要点中:https://gist.github.com/tonyeung/5513769
2013-05-03 15:14:41,292 (GMT-5) [10] DEBUG DotNetOpenAuth.Messaging.Channel - Sending AccessTokenAuthorizationCodeRequestC request.
2013-05-03 15:14:41,393 (GMT-5) [10] DEBUG DotNetOpenAuth.Http - HTTP POST http://localhost:38828/OAuth/Token
2013-05-03 15:14:41,450 (GMT-5) [10] ERROR DotNetOpenAuth.Http - http://localhost:38828/OAuth/Token returned 400 BadRequest: Bad Request
2013-05-03 15:14:41,450 (GMT-5) [10] DEBUG DotNetOpenAuth.Http - WebException from http://localhost:38828/OAuth/Token:
{"error":"invalid_request"}我已经将解决方案上传到https://github.com/tonyeung/dotnetopenauth
入口点在客户端项目的主控制器上的about操作中。
解决方案在最新的nuget dnoa包VS2012中。Nuget restore处于打开状态。
请注意,为了理解库是如何工作的,我在需要的时候实现了它们。我确定这个错误是由于某个地方缺少实现所致,但我不确定是什么?
发布于 2013-05-06 22:32:10
所以看起来我在授权服务器中遗漏了IsAuthorizationValid和CreateAccessToken的实现。请检查github存储库,查找我放入的存根,这些存根可以使错误消失。
编辑:还有一个我没有捕获的数据库验证错误。因此,基本上服务器端的任何错误都会导致如下消息。
EDIT2:还有一个问题,如果页面的url包含任何非url编码值,它将抛出无效的请求。在我的例子中,我的登录页面有一个查询字符串参数returnUrl,我将它设置为/Home,它不喜欢它,必须是:%2FHome
https://stackoverflow.com/questions/16367084
复制相似问题