0

Comment puis-je utiliser la base de données Firebase Realtime lorsque je souhaite uniquement utiliser la connexion à Google? Existe-t-il un moyen de dire à la base de données que je suis connecté?Base de données Firebase RealTime + Google Connectez-vous

Par défaut les règles disent:

write: auth != null 
read: auth != null 

Comment puis-je dire la DB après avoir signé à travers de session Google qui "auth != null".

J'espère que je me suis fait clair, si ce n'est pas s'il vous plaît faites le moi savoir.

EDIT: J'ai changé les règles au-dessous, mais encore, rien

{ 
    "rules": { 
    ".read": "auth != null && auth.provider == 'google'", 
    ".write": "auth != null && auth.provider == 'google'" 
    } 
} 

Il semble donc que je suis prêt parce que dans la Règle-Simulator il fonctionne, mais je ne sais pas encore comment pour indiquer à la base de données que je me suis connecté à mon compte Google sur mon téléphone Android.

Après je me connecte je fais une écriture simple:

DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference("message"); 
mDatabaseReference.setValue("HELLO"); 

Répondre

1

Utilisation de session Google résultats dans un compte valide et des titres de compétences. Vous devez ensuite utiliser cette information pour vous authentifier avec Firebase. Les étapes sont décrites dans this documentation.

C'est l'exemple de code dans la documentation qui utilise les informations d'identification de connexion Google pour créer un utilisateur Firebase authentifié:

private void firebaseAuthWithGoogle(GoogleSignInAccount acct) { 
    Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId()); 

    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null); 
    mAuth.signInWithCredential(credential) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        if (task.isSuccessful()) { 
         // Sign in success, update UI with the signed-in user's information 
         Log.d(TAG, "signInWithCredential:success"); 
         FirebaseUser user = mAuth.getCurrentUser(); 
         updateUI(user); 
        } else { 
         // If sign in fails, display a message to the user. 
         Log.w(TAG, "signInWithCredential:failure", task.getException()); 
         Toast.makeText(GoogleSignInActivity.this, "Authentication failed.", 
           Toast.LENGTH_SHORT).show(); 
         updateUI(null); 
        } 

        // ... 
       } 
      }); 
} 

Vous pouvez ensuite définir vos règles de sécurité de base de données pour limiter l'accès aux utilisateurs autorisés:

{ 
    "rules": { 
    ".read": "auth != null", 
    ".write": "auth != null" 
    } 
} 
+0

Merci beaucoup Bob, c'était exactement ce que je cherchais. Il fonctionne maintenant comme prévu. – pbertsch

-1

Essayez ceci:

{ 
    "rules": { 
    ".read": true, 
    ".write": true 
    } 
} 

Avertissement: Cette configuration permet à tous les gens d'accéder à votre base de données, sans authentification.

Cordialement,

+1

Cela fonctionne sans problème, mais ce que je veux essayer est maintenant le scénario du monde réel. J'ai seulement activé Google-Sign-In et après que je me sois inscrit je veux écrire à la base de données mais j'obtiens une autorisation refusée. Qu'est-ce que je rate. – pbertsch