2009-03-08 7 views
0

J'utilise Dotnetopenid pour ma solution Openid, tout va bien lorsque vous utilisez le contrôle utilisateur intégré, mais quand je veux mettre en œuvre programmaticaly, comme le code ci-dessous,DotNetOpenID Programmatic Connexion

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

est toujours nul. une idée?

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; 

Répondre

3

obtenir de l'aide de Andrew

J'ai manqué d'ajouter l'extension à ma demande avant de rediriger au fournisseur. (cette étape ne soit pas codé dans les fichiers d'exemple)

Pour ce faire, après la création de l'objet de requête faire comme suit:

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() 
Code

est en vb.net

+0

Pouvez-vous s'il vous plaît indiquer quelques instructions étape par étape pour implémenter DotNetOpenId dans MVC. Je suis un débutant avec MVC et OpenId. – Picflight

+0

@Picflight vous pouvez vérifier ici http://stackoverflow.com/questions/933884/request-for-tutorial-to-add-openid-support-to-nerddinner-asp-net-mvc-application – mohamadreza

0

noté pour être fixé et clarifié dans la prochaine version.

Questions connexes