0
Firebase를 사용하고 가입 절차를 만들고 있습니다.IllegalArgumentException Cloud Firestore에 쓸 때
정기적 인 이메일/비밀번호 인증을 위해 Cloud Firestore에 성공적으로 글을 쓸 수 있습니다. 나는 실제 데이터베이스 내 데이터를 본, 그래서 그것을 성공적으로 기록되는 알고
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.v("INPUT_TEXT", user.getDisplayName());
Toast.makeText(getApplicationContext(), user.getDisplayName().toString(), Toast.LENGTH_LONG).show();
Map<String, Object> userMap = new HashMap<>();
userMap.put("Display_Name", user.getDisplayName());
userMap.put("ID", user.getUid());
userMap.put("Provider", user.getProviders());
mStoreBaseRef.collection("Users").add(userMap);
}
});
그러나, 페이스 북 인증 :
private void handleFacebookAccessToken(AccessToken token) {
Log.d(TAG, "handleFacebookAccessToken:" + token);
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());
FirebaseAuth loggedInAuth = FirebaseAuth.getInstance();
String ID = loggedInAuth.getCurrentUser().getUid();
String displayName = mAuth.getCurrentUser().getDisplayName();
HashMap<String, Object> id = new HashMap<>();
id.put("user_id", ID);
id.put("display_name", displayName);
id.put("provider", mAuth.getCurrentUser().getProviderData());
mStoreBaseRef.collection("Users").add(id);
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
Log.w(TAG, "signInWithCredential", task.getException());
Toast.makeText(getApplicationContext(), "Authentication failed.",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Authentication_Success", Toast.LENGTH_LONG).show();
}
}
});
나는 다음과 같은 오류 받고 있어요 :
java.lang.IllegalArgumentException: Invalid data. Unsupported type: com.google.android.gms.internal.zzdnb
at com.google.firebase.firestore.zzl.zzqe(Unknown Source)
at com.google.firebase.firestore.zzk.zza(Unknown Source)
at com.google.firebase.firestore.zzk.zza(Unknown Source)
at com.google.firebase.firestore.zzk.zza(Unknown Source)
at com.google.firebase.firestore.zzk.zza(Unknown Source)
at com.google.firebase.firestore.zzk.zza(Unknown Source)
at com.google.firebase.firestore.DocumentReference.set(Unknown Source)
at com.google.firebase.firestore.DocumentReference.set(Unknown Source)
at com.google.firebase.firestore.CollectionReference.add(Unknown Source)
at com.troychuinard.fanpolls.SignupActivity$2.onComplete(SignupActivity.java:180)
at com.google.android.gms.tasks.zzf.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5527)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
을
사용자의 "공급자"속성에 저장되기를 기대하는 것은 무엇입니까? 'mAuth.getCurrentUser(). getProviderData()'가 리턴하는 것을주의 깊게보십시오. 또한 성공이나 실패에 관계없이 사용자 데이터를 저장하는 이유는 무엇입니까? 작업이 성공하면 쓰고 싶을 것 같습니다. –
단순히 가입 방법 (이메일, Facebook)을 추적하려고합니다.'getProviderData()'는'UserInfo' 객체의 목록을 반환합니다. – tccpg288
이를 반복하고 데이터베이스에 저장하려는 문자열에 대한'UserInfo' 객체를 살펴보아야합니다. 전체 목록을 데이터베이스에 저장하려고하지 마십시오. –