2016-09-06 1 views
1

Google 인증을 사용하여 로그인하고 프로필 세부 정보를 가져 오는 중입니다.Google 인증 로그인 처음으로 인증 할 때 이름 및 가족 이름이 비어 있음

하지만 한 가지 문제가 있습니다. 사용자가 처음으로 인증하는 경우 SDK는 새 계정을 추가하는 데 도움이 될 것입니다 성공하면 그것은 null이다 onActivityResult

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
GoogleSignInAccount acct = result.getSignInAccount(); 

acct.getGivenName()acct.getFamilyName()

로 다시 전화를 받게됩니다.

그러나 이미 추가 된 계정으로 인증하는 경우 acct.getGivenName()acct.getFamilyName() 모두 예상 값을 갖습니다. 인터넷에 어떤 응답을 찾지 못하고

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestEmail() 
       .requestId() 
       .requestProfile() 
       .build(); 

GoogleApiClient googleApiClient = new GoogleApiClient.Builder(mActivity) 
       .enableAutoManage(mActivity, this) 
       .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
       .build(); 

Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient); 
     startActivityForResult(signInIntent, REQUEST_CODE_GOOGLE_SIGN_IN); 

답변

0

나는 몇 시간 동안 같은 질문을 싸워 왔어을 다음과 같이

내 코드입니다. 결과가없는 많은 시각적 추측을 한 후 트릭을 수행 한 것으로 나타났습니다.

Developers Console에 '웹 애플리케이션'OAuth 2.0 클라이언트 ID를 생성하고 초기화 할 때 전달했습니다. 아래의 GoogleSignInOptions 항목 :

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestIdToken(%Your Web application ID here%) 
      .requestServerAuthCode(%Your Web application ID here%) 
      .requestId() 
      .requestEmail() 
      .requestProfile() 
      .build(); 

그 이후로는 제대로 작동하는 것 같습니다.