使用Facebook认证时,应用程序ID无效



我正在尝试使用Android中的firebase对Facebook用户进行身份验证,但是当我单击"登录"按钮时,我已经实现了所有内容,但是我会获得无效的应用程序ID。我抬头看了许多堆栈溢出问题,但找不到任何解决方案。

我已经在清单文件中尝试过。

<meta-data
    android:name="com.facebook.sdk.ApplicationId"
    android:value="@string/facebook_app_id" />

在String.xml

 <string name="facebook_app_id">7120765558883xx</string>
<string name="fb_login_protocol_scheme">fb712076555888xxx</string>

这是我的代码(我只有一个活动(

public class MainActivity extends AppCompatActivity implements
    View.OnClickListener {
private static final String TAG = "FacebookLogin";
private TextView mStatusTextView;
private TextView mDetailTextView;
// [START declare_auth]
private FirebaseAuth mAuth;
// [END declare_auth]
private CallbackManager mCallbackManager;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // Views
    mStatusTextView = findViewById(R.id.status);
    mDetailTextView = findViewById(R.id.detail);
    findViewById(R.id.buttonFacebookSignout).setOnClickListener(this);
    // [START initialize_auth]
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
    // [END initialize_auth]
    // [START initialize_fblogin]
    // Initialize Facebook Login button
    mCallbackManager = CallbackManager.Factory.create();
    LoginButton loginButton = findViewById(R.id.buttonFacebookLogin);
    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");
            // [START_EXCLUDE]
            updateUI(null);
            // [END_EXCLUDE]
        }
        @Override
        public void onError(FacebookException error) {
            Log.d(TAG, "facebook:onError", error);
            // [START_EXCLUDE]
            updateUI(null);
            // [END_EXCLUDE]
        }
    });
    // [END initialize_fblogin]
}
// [START on_start_check_user]
@Override
public void onStart() {
    super.onStart();
    // Check if user is signed in (non-null) and update UI accordingly.
    FirebaseUser currentUser = mAuth.getCurrentUser();
    updateUI(currentUser);
}
// [END on_start_check_user]
// [START on_activity_result]
@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);
}
// [END on_activity_result]
// [START auth_with_facebook]
private void handleFacebookAccessToken(AccessToken token) {
    Log.d(TAG, "handleFacebookAccessToken:" + token);
    // [START_EXCLUDE silent]

    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(getApplicationContext(), "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                    // [START_EXCLUDE]
                    // [END_EXCLUDE]
                }
            });
}
// [END auth_with_facebook]
public void signOut() {
    mAuth.signOut();
    LoginManager.getInstance().logOut();
    updateUI(null);
}
private void updateUI(FirebaseUser user) {
    if (user != null) {
        mStatusTextView.setText(getString(R.string.facebook_status_fmt, user.getDisplayName()));
        mDetailTextView.setText(getString(R.string.firebase_status_fmt, user.getUid()));
        findViewById(R.id.buttonFacebookLogin).setVisibility(View.GONE);
        findViewById(R.id.buttonFacebookSignout).setVisibility(View.VISIBLE);
    } else {
        mStatusTextView.setText(R.string.signed_out);
        mDetailTextView.setText(null);
        findViewById(R.id.buttonFacebookLogin).setVisibility(View.VISIBLE);
        findViewById(R.id.buttonFacebookSignout).setVisibility(View.GONE);
    }
}
@Override
public void onClick(View v) {
    int i = v.getId();
    if (i == R.id.buttonFacebookSignout) {
        signOut();
    }
}
}

我还创建了Facebook开发人员帐户添加了此应用程序并完成了设置。

移动

   <meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />

应用程序标签解决了问题。

  <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    tools:ignore="GoogleAppIndexingWarning">
    <meta-data
        tools:replace="android:value" // Throws error without this line 
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id"
        />
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

相关内容

最新更新