2008-09-17 29 views
6

मैं Google प्रमाणीकरण API (AuthSub) का अध्ययन कर रहा हूं ... मेरा सवाल है, मैं उपयोगकर्ता की खाता जानकारी (कम से कम उनके जीमेल पते) के बाद कैसे प्राप्त करूं प्रमाणीकरण पास हो गया है?Google प्रमाणीकरण API: उपयोगकर्ता का जीमेल पता कैसे प्राप्त करें

क्योंकि वर्तमान में, मैं प्रमाणीकरण प्रक्रिया से वापस आ गया हूं, यह एक टोकन है जो मुझे उस सेवा तक पहुंच प्रदान करता है जिसे मैंने कभी भी Google सेवा के दायरे में निर्दिष्ट किया है, लेकिन उपयोगकर्ता के लॉगिन आईडी (जीमेल पता) को भी प्राप्त करने का कोई आसान तरीका नहीं है जहां तक ​​मैं बता सकता हूं ...


यदि ऐसा है, तो Google सेवा मुझे उपयोगकर्ता की जानकारी तक पहुंचने की अनुमति देती है?

+0

मैं यह भी जानना चाहता हूं! आर्ग :-) –

+0

जीमेल से उपयोगकर्ता के प्रमाणीकरण और मूल डेटा तक पहुंचने के लिए महान ट्यूटोरियल और स्क्रिप्ट http://www.9lessons.info/2011/07/login-with-google-account.html –

उत्तर

2

Google AppEngine GData सेवाओं का उपयोग करके, आप उपयोगकर्ता से अपने Google Mail, कैलेंडर, Picasa आदि तक पहुंच प्रदान करने का अनुरोध कर सकते हैं। इसे here देखें।

+1

पृष्ठ नहीं मिला: पी @ जो स्कोरा –

4

Google प्रमाणीकरण API एक मान्य उपयोगकर्ता प्रमाणीकृत करने के लिए टोकन आधारित सिस्टम है। यह किसी अन्य इंटरफ़ेस का खुलासा नहीं करता है जो खाताधारक की जानकारी को प्राधिकरण को वापस प्राप्त करने की अनुमति देता है।

2

आप अक्ष एक्सटेंशन के साथ OpenID API के माध्यम से कुछ डेटा प्राप्त कर सकते हैं। यदि आप अन्य तरीकों से प्रमाणीकरण कर रहे हैं, तो मैंने पाया कि https://www-opensocial.googleusercontent.com/api/people/@me/@self पर कॉल किया जा रहा है और यह आपको नाम, ईमेल और चित्र प्राप्त करेगा। प्रामाणिक होने पर स्कॉप्स में http://www-opensocial.googleusercontent.com/api होना सुनिश्चित करें।

+0

इस तरह से ईमेल वापस नहीं करता है – 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; 
     } 
    } 
संबंधित मुद्दे