我是DotNetOpenAuth的新手,我在ProcessUserAuthorization中找不到用作验证程序的值。

我要实现的是使用用户凭据登录到使用OAuth的应用程序(称为UserVoice)。这是我的代码:

string requestToken;
var authorizeUri = consumer.RequestUserAuthorization(new Dictionary<string, string>(), null, out requestToken).AbsoluteUri;
var verifier = "???";
var accessToken = consumer.ProcessUserAuthorization(requestToken, verifier).AccessToken;
consumer.PrepareAuthorizedRequest(endpoint, accessToken, data).GetResponse();


我尝试使用用户名,密码,用户密钥,用户机密,但似乎无济于事。有人知道我应该使用哪个值作为验证者吗?

谢谢

最佳答案

我终于找到了一种使用DotNetOpenAuth登录UserVoice的方法。我认为UserVoice的OAuth实现不是标准的,但在此过程中我能够做到:

var consumer = new DesktopConsumer(this.GetInitialServiceDescription(), this._manager)
string requestToken;
consumer.RequestUserAuthorization(null, null, out requestToken);

// get authentication token
var extraParameters = new Dictionary<string, string>
{
    { "email", this._email },
    { "password", this._password },
    { "request_token", requestToken },
};

consumer = new DesktopConsumer(this.GetSecondaryServiceDescription(), this._manager);
consumer.RequestUserAuthorization(extraParameters, null, out requestToken);


其中GetInitialServiceDescription返回良好的请求描述,而GetSecondaryServiceDescription是被入侵的版本,并返回授权端点代替请求令牌端点。这样返回的“ request_token”(从我对OAuth的理解来看,这实际上不是正常的request_token)可以用作PrepareAuthorizedRequest的访问令牌。

10-08 18:33