구글 인증 API:을 얻는 방법은 사용자의 gmail 주소
-
01-07-2019 - |
문제
나는 공부하고 Google 인증(API AuthSub)...나의 질문을 받으려면 어떻게 해야 하는 사용자의 계정 정보(적어도 Gmail 주소)인증은 전달되는가?
기 때문에 현재 나가 모두에서 다시 얻을 인증 프로세스는 토큰을 부여하는 나에 액세스하는 Google 서비스에서 지정한 범위를,그러나 없다는 쉬운 방법도 사용자로 로그인 id(이메일)로까지 말할 수 있는...
그렇다면,구글은 서비스를 관리 할 수 있는 사용자의 정보?
해결책
를 사용하는 Google 애플리케이션류 서비스를 요청할 수 있는 사용자가 액세스를 제공하는 Google,이메일,캘린더,Picasa,etc.체크아웃 기.
다른 팁
구글 인증 API 를 기반으로 하는 토큰 시스템 인증하는 유효한 사용자.그것은 노출하지 않는 다른 인터페이스를 얻을 수 있습니다 계정 소유자 정보를 authorizer.
당신이 얻을 수 있는 데이터의 일부를 OpenID API, 도끼로 확장자.인증하는 경우 다른 방법으로,최고의 발견은 전화 https://www-opensocial.googleusercontent.com/api/people/@me/@self
얻을 것이다 그리고 그것은 당신에게 이름,이메일,사진입니다.인지 확인해야 http://www-opensocial.googleusercontent.com/api
범위에서 인증할 때.
[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;
}
}
제휴하지 않습니다 StackOverflow