ポイントは、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 から継承します。WebServerClient
OAuth 2.0プロセスのためにOAuth 2.0も追加する必要があると思いますか?