1

ポイントは、Twitter (OAuth 1.0a) と Facebook (OAuth 2.0 っぽい) から情報を読み取るアプリを持っていることです (SO の半分は既にこれを知っているように感じます)。

Twitter バージョンでは、古い WebConsumer クラスを使用します。これには、トークンを格納する ITokenManager.StoreNewRequestToken 関数も呼び出す PrepareRequestUserAuthentication 関数があります。

私の質問は、これが 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 クラスがあります。どちらも、OAuth 1.0 プロセスの WebConsumer を返す関数 GetConsumer(IConsumerTokenManager tm) を含む OAuthWebApplication から継承します。WebServerClientOAuth 2.0プロセスのためにOAuth 2.0も追加する必要があると思いますか?

4

1 に答える 1

1

DotNetOpenAuth の OAuth 2 クライアント クラスはトークン マネージャーさえ使用しないため、決してありません。

OAuth 1 では、クライアントがアクセスの要求とアクセスの受信の中間状態を追跡する必要があるため、トークン マネージャーが必要です。しかし、OAuth 2 では、格納する要求トークンがなく、最終的なアクセス トークンのみであるため、クライアントはより単純です。

于 2012-06-06T14:38:12.530 に答える