webentwicklung-frage-antwort-db.com.de

Firebase-Authentifizierungsfehler in Android

Hier ist ein Screenshot Ich versuche, mich zu diesem Zeitpunkt in meinem Projekt mittels Firebase-Authentifizierung in meinem Projekt anzumelden. Es ist ein Fehler aufgetreten

com.google.firebase.auth.FirebaseAuthException: Diese Operation ist nicht dürfen. Sie müssen diesen Dienst in der Konsole aktivieren. und es heißt auch ERROR_OPERATION_NOT_ALLOWED

Diese Operation ist nicht zulässig. Sie müssen diesen Dienst in der Konsole aktivieren.

6
manjiri

Wie Sie im Fehler gesagt haben, müssen Sie die Authentifizierung in Ihrer Firebase-Konsole aktivieren.

Dies kann geschehen, indem Sie auf Ihr Projekt zugreifen -> Authentifizierungsmenü, SIGN-IN-METHODE -> und dann den gewünschten Authentifizierungstyp aktivieren.

9
Alex Mamo

Die folgenden Schritte haben für mich funktioniert

  1. Gehen Sie zur Firebase-Konsole und aktivieren Sie die Firebase-Authentifizierung für die gewünschte Anmeldemethode (meist "E-Mail und Passwort" und "anynomous").
  2. Laden Sie Ihre google-services.json-Datei von der Konsole herunter und ersetzen Sie sie durch die vorhandene
  3. Erstellen Sie Ihr Projekt neu

Es hat für mich funktioniert und ich hoffe, dass es auch für Sie funktioniert.

PS: Ich füge diese Antwort hinzu, weil keine der anderen Antworten die Json-Datei ersetzt, was meiner Meinung nach die Arbeit für mich erledigt hat.

4
AwaisMajeed

Sie müssen die Firebase-Authentifizierung von Firebase, über E-Mail oder Facebook oder andere zulassen

Firebase-Konsole -> Authentifizierung -> Anmeldemethode, und aktivieren Sie eine Anmeldemethode, die von Ihrer App verwendet wird

 here

enter image description here

Vollständiges Beispiel für AuthActivity-Klassencode hier:

package com.<you_domain>.<your_application_name>;

import Android.app.ProgressDialog;
import Android.content.Context;
import Android.content.DialogInterface;
import Android.content.Intent;
import Android.graphics.drawable.ColorDrawable;
import Android.net.Uri;
import Android.os.Build;
import Android.os.Bundle;
import Android.support.annotation.NonNull;
import Android.support.multidex.MultiDex;
import Android.support.v4.content.ContextCompat;
import Android.support.v7.app.AlertDialog;
import Android.support.v7.app.AppCompatActivity;
import Android.util.Log;
import Android.view.View;
import Android.view.Window;
import Android.view.WindowManager;
import Android.widget.ProgressBar;
import Android.widget.Toast;
import com.google.Android.gms.auth.api.Auth;
import com.google.Android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.Android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.Android.gms.auth.api.signin.GoogleSignInResult;
import com.google.Android.gms.common.ConnectionResult;
import com.google.Android.gms.common.GoogleApiAvailability;
import com.google.Android.gms.common.api.GoogleApiClient;
import com.google.Android.gms.tasks.OnCompleteListener;
import com.google.Android.gms.tasks.Task;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.GoogleAuthProvider;

public class AuthActivity extends AppCompatActivity
    implements GoogleApiClient.OnConnectionFailedListener,
    View.OnClickListener{

private Context authActivity;

private static int RC_SIGN_IN = 1;
private static String TAG = "AUTH_ACTIVITY";
private GoogleApiClient mGoogleApiClient;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;

private AlertDialog alertDialog;

private Android.app.AlertDialog splashDialog;

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    authActivity = this;

    setContentView(R.layout.auth_activity);

    Window window = this.getWindow();

    if (Android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.setStatusBarColor(ContextCompat.getColor(this, R.color.colorPrimaryDark));
    }

    GoogleApiAvailability api = GoogleApiAvailability.getInstance();
    int gpsAvail = api.isGooglePlayServicesAvailable(authActivity);

    if(Connection.isInternetConnected(authActivity)){

        if(gpsAvail == ConnectionResult.SUCCESS){

        mAuth = FirebaseAuth.getInstance();
        mAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {

                FirebaseUser user = firebaseAuth.getCurrentUser();

                if(user != null){
                    Log.d("AUTH", "user logged in: " + user.getEmail());
                }else{
                    Log.d("AUTH", "user logged out.");
                }
            }
        };

        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.
                DEFAULT_SIGN_IN).requestIdToken(getString(R.string.default_web_client_id))
                .requestEmail()
                .build();

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

        findViewById(R.id.sign_in_btn).setOnClickListener(this);

    }else if(gpsAvail == ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED){

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(authActivity);

        alertDialogBuilder.setCancelable(false);
        alertDialogBuilder.setTitle("Google Play Services out of date");
        alertDialogBuilder.setMessage("Your Google Play Services version is out of date. " +
                "Please update it and continue.");
        alertDialogBuilder.setIcon(Android.R.drawable.ic_dialog_alert);

        alertDialogBuilder.setPositiveButton(" UPDATE ", new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int id)
            {

                String url = "https://play.google.com/store/apps/" +
                        "details?id=com.google.Android.gms";
                Intent i = new Intent(Intent.ACTION_VIEW);
                i.setData(Uri.parse(url));
                startActivity(i);

            }
        });

        alertDialog = alertDialogBuilder.create();

        alertDialog.setOnShowListener( new DialogInterface.OnShowListener() {
            @Override
            public void onShow(DialogInterface arg0) {
                alertDialog.getButton(AlertDialog.BUTTON_POSITIVE)
                        .setTextColor(getColor(authActivity, R.color.colorPrimary));
            }
        });

        alertDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialogInterface) {
                finish();
            }
        });

        alertDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
            @Override
            public void onDismiss(DialogInterface dialogInterface) {
                finish();
            }
        });

        alertDialog.show();

    }else{

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(authActivity);

        alertDialogBuilder.setCancelable(false);
        alertDialogBuilder.setTitle("Google Play Services needed");
        alertDialogBuilder.setMessage("You need Google Play Services in order to proceed. " +
                "Please install the latest version.");
        alertDialogBuilder.setIcon(Android.R.drawable.ic_dialog_alert);

        alertDialogBuilder.setPositiveButton(" INSTALL ", new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int id)
            {

                String url = "https://play.google.com/store/apps/" +
                        "details?id=com.google.Android.gms";
                Intent i = new Intent(Intent.ACTION_VIEW);
                i.setData(Uri.parse(url));
                startActivity(i);

            }
        });

        alertDialog = alertDialogBuilder.create();

        alertDialog.setOnShowListener( new DialogInterface.OnShowListener() {
            @Override
            public void onShow(DialogInterface arg0) {
                alertDialog.getButton(AlertDialog.BUTTON_POSITIVE)
                        .setTextColor(getColor(authActivity, R.color.colorPrimary));
            }
        });

        alertDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialogInterface) {
                finish();
            }
        });

        alertDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
            @Override
            public void onDismiss(DialogInterface dialogInterface) {
                finish();
            }
        });

        alertDialog.show();

    }

}else {

    try {
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(authActivity);

        alertDialogBuilder.setCancelable(false);
        alertDialogBuilder.setTitle("No internet connection");
        alertDialogBuilder.setMessage("Internet not available. " +
                "Please check your internet connectivity and try again.");
        alertDialogBuilder.setIcon(Android.R.drawable.ic_dialog_alert);

        alertDialogBuilder.setPositiveButton(" OK ", new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int id)
            {
                dialog.cancel();
            }
        });

        alertDialog = alertDialogBuilder.create();

        alertDialog.setOnShowListener( new DialogInterface.OnShowListener() {
            @Override
            public void onShow(DialogInterface arg0) {
                alertDialog.getButton(AlertDialog.BUTTON_POSITIVE)
                        .setTextColor(getColor(authActivity, R.color.colorPrimary));
            }
        });

        alertDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialogInterface) {
                finish();
            }
        });

        alertDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
            @Override
            public void onDismiss(DialogInterface dialogInterface) {
                finish();
            }
        });

        alertDialog.show();

    }
    catch(Exception e)
    {
        Log.d("Connection", "Show Dialog: " + e.getMessage());
    }

}

}

@Override
protected void onStart() {
    super.onStart();
    if(mAuthListener != null) {
        mAuth.addAuthStateListener(mAuthListener);
    }
}

@Override
protected void onStop() {
    super.onStop();
    if(mAuthListener != null){
        mAuth.removeAuthStateListener(mAuthListener);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == RC_SIGN_IN){

        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

        if(result.isSuccess()){
            GoogleSignInAccount account = result.getSignInAccount();
            firebaseAuthWithGoogle(account);

        }else{
            Log.d(TAG, "Google Login Failed");

            Toast.makeText(authActivity, "Sign in failed.", Toast.LENGTH_LONG).show();

        }

    }

}

private void firebaseAuthWithGoogle(GoogleSignInAccount acct){

    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Log.d("AUTH", "signInWithCredential:oncomplete: " + task.isSuccessful());

                    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

                    if(user != null){

                        Intent intent = new Intent(AuthActivity.this, MainActivity.class);
                        startActivity(intent);
                        //splashDialog.dismiss();
                        splashDialog.cancel();

                        Toast.makeText(authActivity, "Successfully signed in",
                                Toast.LENGTH_LONG).show();

                        finish();

                    }

                }
            });

}

private void signIn(){
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, RC_SIGN_IN);
}

@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

    Log.d(TAG, "Connection failed.");

}

@Override
public void onClick(View view) {

    switch(view.getId()){

        case R.id.sign_in_btn:

            splashDialog = ProgressDialog.show(this, null, null);
            ProgressBar spinner = new Android.widget.ProgressBar(this, null,
                    Android.R.attr.progressBarStyle);
            spinner.getIndeterminateDrawable().setColorFilter(getColor(this,
                    R.color.colorPrimary), Android.graphics.PorterDuff.Mode.SRC_IN);
            splashDialog.getWindow().setBackgroundDrawable(
                    new ColorDrawable(Android.graphics.Color.TRANSPARENT));
            splashDialog.setContentView(spinner);
            splashDialog.setCancelable(false);

            signIn();

            break;

    }

}

@Override
public void onDestroy() {
    super.onDestroy();

    if (splashDialog != null) {
        splashDialog.cancel();
        splashDialog = null;
    }

}

@SuppressWarnings("deprecation")
public static int getColor(Context context, int id) {
    final int version = Build.VERSION.SDK_INT;
    if (version >= 23) {
        return ContextCompat.getColor(context, id);
    } else {
        return context.getResources().getColor(id);
    }
}

}
4
Razvan

versuchen Sie alle obigen Antworten, obwohl es immer noch nicht funktioniert Ersetzen Sie die Datei google-services.json durch die neue Datei google-services.json. es hat für mich geklappt, es jetzt zu tun.

0
saigopi

Ich hatte das gleiche Problem bei der Arbeit mit einer Nativescript-App und nichts wurde behoben, bis ich meine Knotenmodule und Plattformordner DELETED und das Projekt neu erstellt hatte. Das hat mein Problem behoben. Mit anderen Worten (und dies kann für andere Frameworks als TNS oder sogar für Mobilgeräte gelten): delete Sie generierte Dateien und erstellen neu, um sie neu zu generieren.

Hoffe das hilft jemandem! Ich weiß, dass es lange gedauert hat, bevor ich Folgendes ausprobierte: p

0
Camilo

Ich habe auch das gleiche Problem entdeckt. Nichts half, mit Regeln und Abstufungen, Enablings und so weiter zu spielen. Das einzige, was die Lösung war, ist in onCreate ():

...                                                           
    FirebaseOptions options = new FirebaseOptions.Builder()
            .setApiKey("AIzaSyA61lkklrz_K_vXsrUUiug9LwImK3sg26bE")//https://console.developers.google.com/apis/credentials?project=korisanjish-92e92
            .setApplicationId("uz.man.speach.gapi")
            .setDatabaseUrl("https://korisanjish-92e92.firebaseio.com/")
            .build();
     fbApp = FirebaseApp.initializeApp(getApplicationContext(), options, "SpeachGAPIMaximTest");
    fbDB = FirebaseDatabase.getInstance(fbApp);
    fbDB.setPersistenceEnabled(true);                                   
     ...

Und in onStart ():

...                                                                        
    mAuth = FirebaseAuth.getInstance(fbApp);//
     List<FirebaseApp> lLcl= FirebaseApp.getApps(this);
    for(FirebaseApp fb : lLcl){
        l.a(fb.getName());
    }

    showWheel();
    mAuth.signInWithEmailAndPassword("[email protected]", "U$pe$hn11Proekt")
            .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
                        l.a( "signInWithEmail:success");
                        FirebaseUser currentUser = mAuth.getCurrentUser();

                        if(currentUser==null)
                            l.a(434343);
                        else
                            l.a( currentUser.getEmail());
                        stopWheel();

                    } else {
                        // If sign in fails, display a message to the user.
                        l.a( task.getException());
                        l.a(task.getException().getMessage());
                        Toast.makeText(MainActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        finish();
                    }
                }
            });                                                           
         ...

Und in einer Methode:

private void sendToFireBase() {
    MainActivity activityLcl = (MainActivity) getActivity();
    DatabaseReference mDatabase = activityLcl.getFbDB().getReference();
    String sLcl = (String) hashMap.get("Item ID");
    User userLcl = new User(altitudeDouble, location.getLongitude(), location.getLatitude(), urlString,
            textString, languageString, preceededIdString, sLcl);
    //Double altitude, Double longitude, Double latitude, String url, String text, String locale, String preceededId

    FirebaseAuth mAuthLcl = activityLcl.getAuth();
    activityLcl.showWheel();
    mDatabase.child("users").child(mAuthLcl.getUid()).setValue(userLcl, new DatabaseReference.CompletionListener() {
        public void onComplete(DatabaseError error, DatabaseReference ref) {
            MainActivity activityLcl = (MainActivity) getActivity();
            String s2Lcl = "";
            if (null == error) {
                s2Lcl = "Uploaded";
            } else
                s2Lcl = error.getDetails();
            activityLcl.showMessage("Value was set. Status = " + s2Lcl);

            l.a("Value was set. Error = " + s2Lcl);
            activityLcl.stopWheel();
        }
    });
}

Ein anderer Fehler, den ich in strings.xml gemacht habe, war der app_name in einem Buchstaben falsch.

0
CodeToLife

Ich weiß, es ist eine alte Frage, aber ich habe kürzlich ein ähnliches Problem gesehen und herausgefunden, wie ich es lösen kann. In meinem Fall bestand mein Problem darin, wie ich das SignInIntent erstellt hatte, das an startActivityForResult übergeben wurde.

Wie Sie haben auch ich die Google-Authentifizierungsmethode in Firebase Console richtig konfiguriert und den Beispielcode auf der Seite Firebase-Dokumentation ( https://firebaseopensource.com/projects/firebase/firebaseui-Android/auth/README.md) kopiert ).

Ich habe jedoch die gleiche Fehlermeldung erhalten, die Sie bei jedem Verbindungsversuch erhalten haben. Dann wurde mir klar, dass ich den Google-Provider nicht aktiviert hatte, als ich startActivityForResult anrief. Zuerst habe ich den folgenden Code ohne Erfolg ausprobiert.

startActivityForResult(
    AuthUI.getInstance()
          .createSignInIntentBuilder()
          .build(),
           RC_SIGN_IN);

Dann habe ich es in den untenstehenden Code geändert und zum Laufen gebracht!

startActivityForResult(
    AuthUI.getInstance()
        .createSignInIntentBuilder()
        .setAvailableProviders(Arrays.asList(                        
                AuthUI.IdpConfig.GoogleBuilder().build()))
        .build(), RC_SIGN_IN)

Beachten Sie, dass der erste Code-Snippet nicht den Google-Anbieter verwendet. Daher wurde die Benutzer-/Kennwort-Authentifizierungsmethode verwendet. Wenn Sie diese Methode in der Firebase Console aktivieren, funktioniert dieses Snippet einwandfrei.

0
Marlon