Google Plus 인증 및 Firebase를 사용 중입니다.Firebase, Android, Google Plus 로그인 - 사용자의 이메일 주소를 가져올 수 없음
현재 Android로 기본 인증 예제를 진행 중입니다. 기본 인증 부분은 github의 코드로 잘 작동하며 정상적으로 작동합니다. https://github.com/firebase/firebase-login-demo-android
전자 메일 주소를 가져 오려고 할 때 문제가 발생합니다. 어떤 이유로 인해 authData 개체에 존재하지 않는 것 같습니다. Firebase documentation on Google authentication에서
:
getProviderData().get("email") - The Google user's primary email address as listed on their profile. Returned only if a valid email address is available, and the Google
내가 activity_main.xml 에 텍스트 뷰를 추가하면 ..... .....
내 코드 MainActivity.java에서 다음:
private void setAuthenticatedUser(AuthData authData) {
if (authData != null) {
/* Hide all the login buttons */
......
mLoggedInStatusTextView.setVisibility(View.VISIBLE);
mEmailTextView = (TextView) findViewById(R.id.email_textView);
mEmailTextView.setText(authData.getProviderData().get("email").toString());
mEmailTextView.setVisibility(View.VISIBLE);
......
}
오류가 발생합니다 : 가상 메소드 'java.lang.String ja를 호출하려고 시도했습니다. null 개체 참조에 대해 'va.lang.Object.toString()'
또한 디버그가 켜져있는 상태에서 authData 개체를 살펴볼 때 전자 메일은 설정되지 않지만 다른 값은 - auth, provider, providerData, token, uid, expires 등 ...
이메일 주소를 가져 오는 것 외에는 모든 것이 잘 작동하는 것처럼 보입니다. addiontial 권한이 필요한지 확실하지 않습니다.
내가 읽은 바로는<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
의 GET_ACCOUNTS 권한이 충분히 있어야한다 : 내의 AndroidManifest.xml 파일에서 나는 다음 있습니다. Firebase가 왜 가져올 수 없는지에 대한 아이디어가 있습니까?
편집 : 또한, 나는
if(authData.getProviderData().containsKey("email")) {
map.put("displayName", authData.getProviderData().get("email").toString());
}
https://www.firebase.com/docs/android/guide/user-auth.html#section-storing 다음이 이메일 값은 항상 비어 중포 기지 내 사용자 데이터를 저장할 수 있어요, 그래서 모든 구글 플러스에서 이메일을 검색 아니에요.
고마워요. 이것은 거의 내가 결국 끝내었던 것입니다. 나는 성능에 영향을 미칠지 모르겠다. 다른 전화를하는 것이지만 적어도 지금은 효과가있다. – Chris