0

在我从 oauth 服务器获取代码后的第二次调用中Client.ProcessUserAuthorization();,我得到一个异常: Error occurred while sending a direct message or getting the response.

这是使用 log4net 获取的日志文件的最后一部分,完整的日志记录在这个 gist 中: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
入口点位于 Client 项目的主控制器上的 about 操作中。
解决方案在最新的 nuget dnoa 包 VS2012 中。Nuget 恢复已开启。

请注意,我正在实施我需要的部分,以便了解库的工作原理。我确定这个错误是由于某处缺少实现,但我不确定它是什么?

4

1 回答 1

0

所以看起来我在授权服务器中缺少 IsAuthorizationValid 和 CreateAccessToken 的实现。请检查 github 存储库中我放入的存根,这些存根会使错误消失。

编辑:还有一个我没有捕获的数据库验证错误。所以基本上服务器端的任何错误都会导致这条消息看起来像。

EDIT2:还有一个问题,如果页面的 url 包含任何非 url 编码的值,它将引发无效请求。在我的情况下,我的登录页面有一个 returnUrl 的查询字符串参数,我将它设置为 /Home,它不喜欢它,必须是:%2FHome

于 2013-05-06T14:32:09.983 回答