在什么时候在OAuth 2.0 DNOA版本中调用'TokenManager.StoreNewRequestToken'

时间:2012-06-05 13:30:57

标签: facebook dotnetopenauth facebook-access-token

关键是,我有一个应用程序(我觉得已经知道这一半了)从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吗?

1 个答案:

答案 0 :(得分:1)

从来没有,因为DotNetOpenAuth中的OAuth 2客户端类甚至没有使用令牌管理器。

OAuth 1需要令牌管理器,因为客户端必须跟踪请求访问和接收访问的中间状态。但是在OAuth 2中,客户端更简单,因为没有要存储的请求令牌 - 只有最终的访问令牌。