Я использовал библиотеку DoNetOpenAuth и последовал примеру здесь
Аутентификация работает, но, хотя мне требуется электронная почта, ответ на претензии не имеет значения.
На самом деле, не имеет значения, что мне нужно, ответы на запросы всегда нулевые. Не уверен, что я делаю неправильно, и я был бы признателен за вашу помощь.
Заранее спасибо.
Вот мой код кнопки входа в систему
protected void btnSubmit_Click( object sender, EventArgs e )
{
//Login button has been pushed. Add an extension and redirect
using (OpenIdRelyingParty openId = new OpenIdRelyingParty())
{
IAuthenticationRequest request = openId.CreateRequest( txtOpenID.Text );
request.AddExtension( new ClaimsRequest
{
Email = DemandLevel.Require,
Country = DemandLevel.Request,
TimeZone = DemandLevel.Request
} );
request.RedirectToProvider();
}
}
Вот код загрузки страницы. Переменная ClaimsResponse всегда равна нулю.
protected void Page_Load( object sender, EventArgs e )
{
OpenIdRelyingParty openId = new OpenIdRelyingParty();
var response = openId.GetResponse();
//check if we're processing a request
if(response != null)
{
switch ( response.Status )
{
case AuthenticationStatus.Authenticated:
//authentication worked. grab our required fields
var claimsResponse = response.GetExtension<ClaimsResponse>();
//TODO enter required fields into the database
break;
case AuthenticationStatus.Canceled:
//TODO handle cancel
break;
case AuthenticationStatus.Failed:
//TODO handle failed
break;
}
}
}