【问题标题】:Android: Facebook authentication using Firebase doesn't startAndroid:使用 Firebase 的 Facebook 身份验证无法启动
【发布时间】:2018-08-05 05:12:10
【问题描述】:

我对 Firebase 和 Facebook 登录非常陌生,因此我遵循了许多关于如何在我的实时数据库上使用 Facebook 登录的教程。问题是,当您单击 LoginButton 时,活动似乎开始了,但之后它立即关闭。我已经实现了谷歌登录,一切正常,我真的找不到问题。

这就是我的做法

mCallbackManager = CallbackManager.Factory.create();
    facebookButton.setReadPermissions("email", "public_profile");
    facebookButton.setFragment(this);
    LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            Log.d(TAG,"XD1");
            handleFacebookAccessToken(loginResult.getAccessToken());
        }

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

        @Override
        public void onError(FacebookException error) {
            Log.e(TAG, "error connecting to fb", error);
        }
    });

private void handleFacebookAccessToken(AccessToken token){
    Log.d(TAG, "handleFacebookAccessToken:" + token);

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(getActivity(), 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");
                        LoginManager.getInstance().logInWithReadPermissions(getActivity(), Arrays.asList("public_profile"));
                        getFragmentManager().beginTransaction().replace(R.id.frameLayout, PhoneFragment.newInstance(mAuth.getCurrentUser().getUid())).commit();
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w("errore", "signInWithCredential:failure", task.getException());
                        Toast.makeText(getContext(), "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                    }
                }
            });
}


public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode==REQUEST_GOOGLE) {
        super.onActivityResult(requestCode, resultCode, data);
        Log.d(TAG, "onResult di google");
        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
        try{
            GoogleSignInAccount account = task.getResult(ApiException.class);
            firebaseAuthWithGoogle(account);
        } catch (ApiException e){
            Log.e("errore", "errore, avvisare l'utente");
        }
    } else {
        Log.d(TAG, "onActivityResult di facebook richiamato");
        // Pass the activity result back to the Facebook SDK
        mCallbackManager.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }
}

logcat 显示的错误是 SERVER_ERROR: [code] 1675030 [message]: Error execution query。 [额外]:执行操作“ProxyAuthAppLoginStartQuery”时出错:在 Query.proxy_auth_app_login_start:字段实现引发异常。查看您的服务器日志以获取更多信息。

我以为是因为测试用户,但添加他们并没有改变

【问题讨论】:

  • 尝试在调试模式下运行您的应用并检查 logcat。
  • 你说得对,我会更正我的问题并发布我是如何解决的

标签: android firebase firebase-authentication facebook-login


【解决方案1】:

问题在于清单中的标记元数据。我无法在应用程序中添加元数据,因为 CacheMeOutside 在这里回答 SERVER_ERROR: [code] 1675030 [message]: Error performing query 因为该标签已经在合并清单中(我认为是因为 Firebase),所以我所要做的就是在我的字符串资源文件中更改字符串名称“facebook_app_id”到“facebook_application_id”,一切正常。希望这可能对某人有所帮助

【讨论】:

    【解决方案2】:

    按照 Facebook 的教程将 sdk 添加到您的应用。很可能您的 sdk 设置不正确,因此当您启动 Facebook auth 时,sdk 由于缺少客户端 ID 而失败。此外,您必须在 firebase 项目控制台中设置 Facebook,以便 Firebase 可以完成身份验证并获取必要的信息

    【讨论】:

      猜你喜欢
      • 2017-11-27
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 2016-04-14
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      相关资源
      最近更新 更多