2008-09-17 3 views
6

Я изучал API аутентификации Google (AuthSub) ... Мой вопрос: как получить информацию об учетной записи пользователя (по крайней мере, адрес Gmail) после аутентификация прошла?API аутентификации Google: как получить адрес gmail пользователя

Поскольку в настоящее время все, что я вернусь из процесса проверки подлинности, является маркером, предоставляющим мне доступ к тому, что когда-либо предоставляло сервис Google, который я указал в области, но нет простого способа получить идентификатор входа в систему (адрес Gmail) как насколько я могу судить ...


Если да, то какой сервис Google позволяет мне получить доступ к информации пользователя?

+0

Я также хочу знать это! Aargh :-) – 2009-01-13 16:23:05

+0

отличный учебник и скрипт для получения аутентификации пользователя из gmail и доступа к базовым данным http://www.9lessons.info/2011/07/login-with-google-account.html – 2012-12-03 10:02:58

ответ

2

Используя службы Google AppEngine GData, вы можете попросить пользователя предоставить вам доступ к их Почте Google, календарю, Picasa и т. Д. Проверьте его here.

+1

Страница не найдена: P @Joe Skora – 2014-05-13 13:47:21

4

Google Authentication API - это система, основанная на токенах, для аутентификации действительного пользователя. Он не раскрывает какой-либо другой интерфейс, который позволяет вернуть информацию владельца учетной записи авторизатору.

2

Вы можете получить некоторые данные через OpenID API с расширением топора. Если вы выполняете аутентификацию с помощью других методов, лучше всего я нахожу вызов https://www-opensocial.googleusercontent.com/api/people/@me/@self, и вы получите имя, адрес электронной почты и картинку. Обязательно наличие http://www-opensocial.googleusercontent.com/api в местах при аутентификации.

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; 
     } 
    } 
Смежные вопросы