저는 C# MVC 프로젝트가 있습니다. Google에서 사용자 정보를 검색하여 사용자 등록 프로세스를 지원하려고합니다. 성, 성, 이메일 및 휴대폰 번호에 액세스하고 싶습니다. 모두 필수 입력란입니다. Google People API를 사용해야한다고 생각합니다. Google+ API는 정상적으로 작동하지만 휴대 전화 번호가 없습니다. 나는이 데이터를 얻는 방법을 확신하지 못한다.MVC 외부 로그인 - Google People API 사용
var googleOptions = new GoogleOAuth2AuthenticationOptions()
{
ClientId = ConfigurationManager.AppSettings["GoogleClientId"],
ClientSecret = ConfigurationManager.AppSettings["GoogleClientSecret"],
Provider = new GoogleOAuth2AuthenticationProvider
{
OnAuthenticated = context =>
{
context.Identity.AddClaim(new Claim("urn:google:accesstoken", context.AccessToken, ClaimValueTypes.String, "Google"));
context.Identity.AddClaim(new Claim(ClaimTypes.Email, context.Email));
context.Identity.AddClaim(new Claim(ClaimTypes.Uri, context.User["image"]["url"].ToString()));
return Task.FromResult(true);
}
}
};
googleOptions.Scope.Add("https://www.googleapis.com/auth/user.phonenumbers.read");
googleOptions.Scope.Add("https://www.googleapis.com/auth/userinfo.email");
googleOptions.Scope.Add("https://www.googleapis.com/auth/userinfo.profile");
app.UseGoogleAuthentication(googleOptions);
을 그리고 내 컨트롤러에서 나는이 : 현재 startup.auth에 내가 가진
if (loginInfo.Login.LoginProvider == "Google")
{
if (loginInfo.Email == null)
loginInfo.Email = GetSchemasClaimValue(loginInfo, "emailaddress");
firstName = GetSchemasClaimValue(loginInfo, "givenname");
lastName = GetSchemasClaimValue(loginInfo, "surname");
mobilePhone = loginInfo.ExternalIdentity.Claims.FirstOrDefault(c => c.Type == ClaimTypes.MobilePhone);
//proPic = GetSchemasClaimValue(loginInfo, "uri");
}
모든 정보를 원하는대로 휴대 전화에 액세스 할 수 있으며 작동 외에. 이 데이터를 검색하는 방법을 모르겠습니다. loginInfo에 클레임으로 표시되기를 기대했지만이 경우에는 클레임이 없습니다. 사용자는 휴대 전화에 액세스 할 수있는 권한을 앱에 제공하라는 메시지가 표시되므로 손해 배상 청구가없는 이유에 대해 다소 혼란 스럽습니다. 내 신생 업체에 소유권 주장을 추가해야합니까? 어떻게 작동할까요? 어떤 도움을 주시면 감사하겠습니다.
안녕하세요, 시도 한이 방법을, 그러나 내 JSON 결과는 같다 "플러스 # 사람", "ETAG": "\"Sh4n9u6xxxNdphy12JkxmY을 \ "" "이메일"[ { "값": "[email protected]" "타입": "계정" } ] "objectType의": "사람" , "ID": "114157772521111131101" "나 displayName": "닉 체", "이름": { "familyName": "체", "givenName과": "닉",363,210}, "이미지": { "URL": "https : //로 XXX = 50", "isDefault"거짓 }, "isPlusUser"거짓, "언어" "엉" "확인 됨": false, "도메인": "xxx" } 전화 번호를 찾을 수 없습니다. 번호 : –
이 답변은 [Google+ API] (https://developers.google.co.kr/+/web/api/rest/latest/people)이며 [Google People API] (https://developers.google.com/people/api/rest/)와는 다릅니다. –
@ NicolasChetty https://developers.google.com/people/api/rest/v1/people/get을 참조하십시오. personFields에서 "phoneNumbers"를 지정해야 할 필요가있는 것처럼 보입니다. 필드 마스크는 사람의 필드를 반환하도록 제한합니다. – ChunLin