2008-09-17 17 views
6

J'ai étudié l'API d'authentification Google (AuthSub) ... Ma question est, comment puis-je obtenir les informations de compte de l'utilisateur (au moins leur adresse Gmail) après le l'authentification est-elle passée? Parce qu'actuellement, tout ce que je récupère du processus d'authentification est un jeton qui me permet d'accéder à tous les services Google que j'ai spécifiés dans la portée, mais il est impossible d'obtenir l'identifiant de connexion de l'utilisateur (adresse Gmail) comme autant que je peux dire ...API Google Authentication: Comment obtenir l'adresse Gmail de l'utilisateur


Si oui, quel service Google me permet d'accéder aux informations de l'utilisateur?

+0

Je veux aussi savoir ça! Aargh :-) –

+0

super tutoriel et script pour obtenir l'authentification de l'utilisateur à partir de gmail et accéder aux données de base http://www.9lessons.info/2011/07/login-with-google-account.html –

Répondre

2

En utilisant les services Google AppEngine GData, vous pouvez demander à l'utilisateur de vous donner accès à son compte Google Mail, Google Agenda, Picasa, etc. Consultez-le here.

+1

Page introuvable: P @Joe Skora –

4

L'API d'authentification Google est un système basé sur des jetons permettant d'authentifier un utilisateur valide. Il n'expose aucune autre interface permettant de récupérer les informations du titulaire du compte sur l'autorisateur.

2

Vous pouvez obtenir certaines données via le OpenID API, avec l'extension hache. Si vous vous authentifiez avec d'autres méthodes, le mieux que je trouve est d'appeler https://www-opensocial.googleusercontent.com/api/people/@me/@self et il vous obtiendra nom, email et photo. Assurez-vous d'avoir http://www-opensocial.googleusercontent.com/api dans les étendues lors de l'authentification.

+0

De cette façon ne retourne pas l'email – Burjua

0
[ValidateInput(false)] 
    public ActionResult Authenticate(string returnUrl) 
    { 
     try 
     { 
      logger.Info("" + returnUrl + "] LoginController : Authenticate method start "); 
      var response = openid.GetResponse(); 
      if (response == null) 
      { 
       try 
       { 
        string discoveryuri = "https://www.google.com/accounts/o8/id"; 
        //OpenIdRelyingParty openid = new OpenIdRelyingParty(); 
        var fetch = new FetchRequest();// new 
        var b = new UriBuilder(Request.Url) { Query = "" }; 
        var req = openid.CreateRequest(discoveryuri, b.Uri, b.Uri); 
        fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email); 
        fetch.Attributes.AddRequired(WellKnownAttributes.Name.FullName); 
        req.AddExtension(fetch); 
        return req.RedirectingResponse.AsActionResult(); 
       } 
       catch (ProtocolException ex) 
       { 
        logger.ErrorFormat(" LoginController : Authenticate method has error, Exception:" + ex.ToString()); 
        ViewData["Message"] = ex.Message; 
        return View("Login"); 
       } 
      } 
      else 
      { 
       logger.Info("" + returnUrl + "] LoginController : Authenticate method :when responce not null "); 
       switch (response.Status) 
       { 
        case AuthenticationStatus.Authenticated: 
         logger.Info("" + response.Status + "] LoginController : Authenticate method : responce status "); 
         var fetchResponse = response.GetExtension<FetchResponse>(); 
         string email = fetchResponse.GetAttributeValue(WellKnownAttributes.Contact.Email); 
         string userIPAddress = HttpContext.Request.UserHostAddress; 
         SecurityManager manager = new SecurityManager();        
         int userID = manager.IsValidUser(email); 

         if (userID != 0) 
         { 
          ViewBag.IsFailed = "False"; 
          logger.Info("" + userID + "] LoginController : Authenticate method : user id id not null "); 
          Session["FriendlyIdentifier"] = response.FriendlyIdentifierForDisplay; 
          Session["UserEmail"] = email; 

          FormsAuthentication.SetAuthCookie(email, false); 

          WebSession.UserEmail = email; 
          WebSession.UserID = userID; 

          UserManager userManager = new UserManager(); 
          WebSession.AssignedSites = userManager.GetAssignedSites(userID); 



          if (!string.IsNullOrEmpty(returnUrl)) 
          { 
           logger.Info("" + returnUrl + "] LoginController : Authenticate method : retutn url not null then return Redirect "); 
           return Redirect(returnUrl); 
          } 
          else 
          { 
           logger.Info("" + returnUrl + "] LoginController : Authenticate method : retutn url null then return RedirectToAction "); 
           // 
           return Redirect("/Home"); 
          } 
         } 
         else 
         { 
          ViewBag.IsFailed = "True"; 
          logger.Info("" + returnUrl + "] LoginController : Authenticate method :user id null "); 
          if (!string.IsNullOrEmpty(returnUrl)) 
          { 
           logger.Info("" + returnUrl + "] LoginController : Authenticate method :and return Redirect "); 
           return Redirect(returnUrl); 
          } 
          else 
          { 
           logger.Info("" + returnUrl + "] LoginController : Authenticate method :and return RedirectToAction "); 

           return View("Index"); 

          } 
         } 

        case AuthenticationStatus.Canceled: 
         logger.Info("" + response.Status + "] LoginController : Authenticate method : AuthenticationStatus.Canceled and return view "); 
         ViewData["Message"] = "Canceled at provider"; 
         return View("Login"); 
        case AuthenticationStatus.Failed: 
         logger.Info("" + response.Status + "] LoginController : Authenticate method : AuthenticationStatus.Failed and return view "); 
         logger.Error(response.Exception.Message); 
         ViewData["Message"] = response.Exception.Message; 
         return View("Login"); 
       } 

      } 
      logger.Info("" + returnUrl + "] LoginController : Authenticate method end and return EmptyResult"); 
      return new EmptyResult(); 
     } 
     catch (Exception ex) 
     { 
      logger.Error(" LoginController : Authenticate method ", ex); 
      throw; 
     } 
    }