2010-04-21 6 views
2

J'ai un projet ASP.NET MVC qui utilise DotNetOpenAuth comme fournisseur d'authentification. Comment puis-je obtenir le nom d'utilisateur (ou l'adresse e-mail) lorsque l'utilisateur se connecte en utilisant https://www.google.com/accounts/o8/id?Comment obtenir le nom d'utilisateur en utilisant DotNetOpenAuth avec Google

switch (response.Status) 
    case AuthenticationStatus.Authenticated: 
     string userOpenId = response.FriendlyIdentifierForDisplay; 
     break; 
(...) 
+0

duplication possible de http://stackoverflow.com/questions/1301200/openid-trying-to-get-email-address-from-google-op –

Répondre

4

J'espère que votre userOpenId variable locale est pas ce que vous utilisez un nom d'utilisateur, parce que la propriété que vous lui attribuer de porte bien son nom, il est uniquement pour l'affichage. Vous ne devez utiliser que IAuthenticationResponse.ClaimedIdentifier pour les noms d'utilisateur. De plus, vous pouvez obtenir l'adresse e-mail de Google (vous ne pouvez jamais obtenir le nom d'utilisateur) en envoyant un FetchRequest pour les e-mails marqués comme attribut obligatoire. Cela a déjà été demandé plusieurs fois, par exemple this one.

+0

Cela pourrait être une question de débutant, Andrew Arnott, mais pourquoi pouvez-vous obtenir l'adresse e-mail de Google, mais pas le nom d'utilisateur (et quelle est la différence?) Je pensais qu'ils étaient une seule et même chose. –

+1

Je ne suis pas sûr qu'il y ait une différence entre le nom d'utilisateur et l'adresse e-mail quand il s'agit de Google. Mais je pense que les utilisateurs sont autorisés à changer leur adresse e-mail principale sur leur compte Google (surtout s'il n'est pas lié à un compte Gmail), et si vous utilisiez l'adresse e-mail de Google comme s'il s'agissait d'un nom d'utilisateur accéder à leur compte avec votre application web. C'est juste une raison pour laquelle l'utilisation de l'identifiant utilisateur prévu par le protocole (claim_id) est si importante. –

Questions connexes