关键是,我有一个应用程序(我觉得有一半人已经知道这一点)从 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 类和一个 TwitterApplication 类。两者都继承自 OAuthWebApplication ,其中包含具有 GetConsumer(IConsumerTokenManager tm) 函数以返回 OAuth 1.0 进程的 WebConsumer。我认为我还需要WebServerClient
为 OAuth 2.0 流程添加 OAuth 2.0 吗?