2008-09-17 5 views
6

Ich habe die Google-Authentifizierungs-API (AuthSub) untersucht ... Meine Frage ist, wie bekomme ich die Kontoinformationen des Nutzers (zumindest ihre Google Mail-Adresse) nach Authentifizierung ist bestanden?Google Authentication API: Wie bekomme ich die Gmail-Adresse des Nutzers?

Da derzeit alles, was ich von der Authentifizierung zurückbekomme, ist ein Token, das mir Zugriff auf den Google-Dienst gewährt, den ich im Bereich angegeben habe, aber es gibt keine einfache Möglichkeit, die Login-ID des Benutzers (Google Mail-Adresse) zu erhalten Soweit ich das beurteilen kann ...


Wenn ja, welche Google-Dienst ermöglicht mir den Zugriff auf die Informationen des Benutzers?

+0

Ich möchte das auch wissen! Aargh :-) –

+0

großes Tutorial und Skript, um die Benutzerauthentifizierung von Google Mail und den Zugriff auf grundlegende Daten http://www.9lessons.info/2011/07/login-with-google-account.html –

Antwort

2

Mithilfe der Google AppEngine GData-Dienste können Sie den Nutzer auffordern, Ihnen Zugriff auf Google Mail, Kalender, Picasa usw. zu gewähren. Überprüfen Sie es unter here.

+1

Seite nicht gefunden: P @ Joe Skora –

4

Google Authentication API ist ein tokenbasiertes System zur Authentifizierung eines gültigen Benutzers. Es stellt keine andere Schnittstelle zur Verfügung, die es ermöglicht, Informationen zum Kontoinhaber zurück zum Autorisierer zu bekommen.

2

Sie können einige der Daten über die OpenID API mit der Axt-Erweiterung erhalten. Wenn Sie mit anderen Methoden authentifizieren, am besten, ich fand, ruft https://www-opensocial.googleusercontent.com/api/people/@me/@self und es erhalten Sie Name, E-Mail und Bild. Stellen Sie sicher, dass Sie bei der Authentifizierung http://www-opensocial.googleusercontent.com/api in den Bereichen haben.

+0

Auf diese Weise wird die E-Mail nicht zurückgegeben – 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; 
     } 
    } 
Verwandte Themen