关键是,我有一个应用程序(我觉得已经知道这一半了)从Twitter(OAuth 1.0a)和Facebook(OAuth 2.0'ish)读取信息。
在Twitter版本中,我使用旧的WebConsumer类。它有一个PrepareRequestUserAuthentication函数,它还调用存储令牌的ITokenManager.StoreNewRequestToken函数。
我的问题是它如何在WebserverClient中工作,它具有看起来相似的功能,但似乎没有以相同的方式起作用。
if (Application is FacebookApplication)
{ // We need WebServerClient instead of WebConsumer so we can use OAuth 2.0
client = new FacebookClient(this)
{
ClientIdentifier = Application.ConsumerKey,
ClientSecret = Application.ConsumerSecret,
};
IAuthorizationState authorization = client.ProcessUserAuthorization();
if (authorization == null)
{
client.RequestUserAuthorization(null, null, callback);
}
}
else
{ // Here we do need WebConsumer
WebConsumer consumer = Application.GetConsumer(this) as WebConsumer;
UserAuthorizationRequest authorizationRequest = consumer.PrepareRequestUserAuthorization(callback, requestParameters, redirectParameters);
consumer.Channel.Send(authorizationRequest);
}
目前我有一个FacebookApplication Class和一个TwitterApplication类。从包含的OAuthWebApplication继承包含函数GetConsumer(IConsumerTokenManager tm)以返回OAuth 1.0进程的WebConsumer。我估计我需要为OAuth 2.0进程添加OAuth 2.0的WebServerClient
吗?
答案 0 :(得分:1)
从来没有,因为DotNetOpenAuth中的OAuth 2客户端类甚至没有使用令牌管理器。
OAuth 1需要令牌管理器,因为客户端必须跟踪请求访问和接收访问的中间状态。但是在OAuth 2中,客户端更简单,因为没有要存储的请求令牌 - 只有最终的访问令牌。