2009-03-08 1 views
0

Я использую Dotnetopenid для моего OpenId решения, все в порядке, когда с помощью встроенного в пользовательский элемент управления, но когда я хочу реализовать programmaticaly, как приведенный ниже код,DotNetOpenID Programmatic Войти

openid.Response.GetExtension<DotNetOpenId.Extensions.SimpleRegistration.ClaimsResponse>(); 

всегда ноль. любая идея?

OpenIdRelyingParty openid = createRelyingParty(); 
    if (openid.Response != null) { 
     switch (openid.Response.Status) { 
      case AuthenticationStatus.Authenticated: 
       // This is where you would look for any OpenID extension responses included 
       // in the authentication assertion. 
       // var extension = openid.Response.GetExtension<SomeExtensionResponseType>(); 

       // Use FormsAuthentication to tell ASP.NET that the user is now logged in, 
       // with the OpenID Claimed Identifier as their username. 
       State.ProfileFields = openid.Response.GetExtension<DotNetOpenId.Extensions.SimpleRegistration.ClaimsResponse>(); 
       FormsAuthentication.RedirectFromLoginPage(openid.Response.ClaimedIdentifier, false); 
       break; 

ответ

3

получать помощь от Andrew

Я скучал, чтобы добавить расширение на мою просьбу перед перенаправлением провайдеру. (этот шаг не закодированы в файлах примеров)

, чтобы сделать это, после создания объекта запроса сделать так:

Dim request As IAuthenticationRequest = openid.CreateRequest(openid_identifier.Text) 
     ' This is where you would add any OpenID extensions you wanted 
     ' to include in the authentication request. 
     ' request.AddExtension(someExtensionRequestInstance); 
     Dim myclaim As New ClaimsRequest 

     With myclaim 
      .BirthDate = DemandLevel.Request 
      .Country = DemandLevel.Request 
      .Email = DemandLevel.Request 
      .FullName = DemandLevel.Request 
      .Gender = DemandLevel.Request 
      .Language = DemandLevel.Request 
      .Nickname = DemandLevel.Request 
      .PostalCode = DemandLevel.Request 
      .TimeZone = DemandLevel.Request 

     End With 


     request.AddExtension(myclaim) 









     ' Send your visitor to their Provider for authentication. 
     request.RedirectToProvider() 

код в vb.net

+0

Не могли бы вы указать некоторые пошаговые инструкции по реализации DotNetOpenId в MVC. Я новичок в MVC и OpenId. – Picflight

+0

@Picflight вы можете проверить здесь http://stackoverflow.com/questions/933884/request-for-tutorial-to-add-openid-support-to-nerddinner-asp-net-mvc-application – mohamadreza

0

Отмеченный быть фиксированной и сделанный более ясным в следующем выпуске.