Ошибка аутентификации при входе в Facebook через firebase в Android - PullRequest
0 голосов
/ 10 марта 2019

Я занимаюсь разработкой приложения, в котором я могу предоставить пользователю возможность войти через Facebook. Теперь я использую firebase для этого и получаю сообщение об ошибке аутентификации при каждой попытке войти в систему. Это происходит в следующем действии, но оно говорит «Ошибка аутентификации». Вот мой код Это моя основная деятельность: -

public class MainActivity extends AppCompatActivity {

private CallbackManager mCallbackManager;
private FirebaseAuth firebaseAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
private TextView txtUser;
private TextView txtEmail;
private ImageView imgProfile;
private LoginButton logoutButton;
private LoginButton loginButton;
private static final String TAG = "MainActivity";
private FirebaseAuth mAuth;
PackageInfo info;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());
    AppEventsLogger.activateApp(this);
    setContentView(R.layout.activity_main);

    mAuth = FirebaseAuth.getInstance();

    // Initialize Facebook Login button
    mCallbackManager = CallbackManager.Factory.create();
    LoginButton loginButton = findViewById(R.id.login_button);
    loginButton.setReadPermissions("email", "public_profile");
    loginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            Log.d(TAG, "facebook:onSuccess:" + loginResult);
            handleFacebookAccessToken(loginResult.getAccessToken());
        }

        @Override
        public void onCancel() {
            Log.d(TAG, "facebook:onCancel");
            // ...
        }

        @Override
        public void onError(FacebookException error) {
            Log.d(TAG, "facebook:onError", error);
            // ...
        }
    });


}

@Override
public void onStart() {
    super.onStart();
    // Check if user is signed in (non-null) and update UI accordingly.
    FirebaseUser currentUser = mAuth.getCurrentUser();
    if(currentUser!=null){
        updateUI(currentUser);
    }

}

private void updateUI(FirebaseUser currentUser) {

    Toast.makeText(MainActivity.this,"Done",Toast.LENGTH_SHORT);
    Intent intent = new Intent(MainActivity.this,AccountActivity.class);
    startActivity(intent);
    finish();
}

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

    // Pass the activity result back to the Facebook SDK
    mCallbackManager.onActivityResult(requestCode, resultCode, data);
}
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) {
                    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(MainActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }

                    // ...
                }
            });
}
}

Теперь я получил свой хэш-ключ, используя следующий метод: -

      try {
        PackageInfo info = getPackageManager().getPackageInfo(
                getPackageName(),
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest messageDigest = MessageDigest.getInstance("SHA");
            messageDigest.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(messageDigest.digest(), Base64.DEFAULT));
        }
    }
    catch (PackageManager.NameNotFoundException e) {

    }
    catch (NoSuchAlgorithmException e) {

    }

И поместил его в мою консоль разработчика fb. Это все еще показывает эту ошибку. Может кто-нибудь объяснить, что я здесь делаю не так?

Когда я проверял logcat, здесь показывалось сообщение: - «Произошла внутренняя ошибка. [Ключ API недействителен. Пожалуйста, передайте действительный ключ API». Я даже не знаю, где этот ключ API был использован. Пожалуйста помоги. Спасибо

1 Ответ

0 голосов
/ 10 марта 2019

Перед входом в firebase был сделан шаг, на котором вы должны были зарегистрировать свое приложение в консоли firebase.Я этого не делал.Я сделал новый проект, следил за каждым шагом в firebase.И сейчас я не получаю никакой ошибки.

...