基本的にFacebookの資格情報でユーザーを認証する次の方法があります。WebException
認証キー (コード) を処理しようとすると、何らかの理由でエラーが発生します。そのため、何が起こっているのかを知るために応答ストリームを読み取ろうとしましたが、ストリームの読み取り中にエラーが発生し続けます。これが私のコードです:
private void OnAuthCallback(HttpContextWrapper context, WebServerClient client)
{
try
{
IAuthorizationState authorizationState = client.ProcessUserAuthorization(context.Request);
AccessToken accessToken = AccessTokenSerializer.Deserialize(authorizationState.AccessToken);
String username = accessToken.User;
context.Items[USERNAME] = username;
}
catch (ProtocolException e)
{
if (e.InnerException != null)
{
String message = e.InnerException.Message;
if (e.InnerException is WebException)
{
WebException exception = (WebException)e.InnerException;
var responseStream = exception.Response.GetResponseStream();
responseStream.Seek(0, SeekOrigin.Begin);
using (StreamReader sr = new StreamReader(responseStream))
{
message = sr.ReadToEnd();
}
}
EventLog.WriteEntry("OAuth Client", message);
}
}
}
responseStream.Seek(0, SeekOrigin.Begin);
この行を削除するArgumentException
と、ストリームが読み取れないというメッセージが表示されます。この行があれば、既に閉じられているストリームを操作できないことがわかります。このストリームはどのように閉鎖されましたか? そして、なぜ私はそれを読むことができないのですか?