title: Getting 'E/TokenRequestor: You have wrong OAuth2 related configurations. Detailed error: INVALID_AUDIENCE' even after providing accurate client IDs
body: <p>I have provided GoogleSignIn option in my app.</p>
  
  <p>Here's my code:</p>
  
  <pre><code>public class SignupActivity extends AppCompatActivity {
  
      private static final int RC_SIGN_IN = 1;
      GoogleApiClient mGoogleApiClient;
      FirebaseAuth mAuth;
      TextView appName;
      ProgressDialog signinProgressDialog;
      CoordinatorLayout coordinatorLayout;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_signup);
  //        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  //        setSupportActionBar(toolbar);
  
          signinProgressDialog = new ProgressDialog(SignupActivity.this);
  
          coordinatorLayout = (CoordinatorLayout) findViewById(R.id.signupCoordinatorLayout);
  
          // Configure Google Sign In
          GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                  .requestIdToken(getString(R.string.o_auth_client_id))
                  .requestEmail()
                  .requestProfile()
                  .requestId()
                  .build();
  
          // Build a GoogleApiClient with access to the Google Sign-In API and the
          // options specified by gso.
          mGoogleApiClient = new GoogleApiClient.Builder(this)
                  .enableAutoManage(this /* FragmentActivity */, new GoogleApiClient.OnConnectionFailedListener() {
                      @Override
                      public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
  
                      }
                  } /* OnConnectionFailedListener */)
                  .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                  .build();
  
          mAuth = FirebaseAuth.getInstance();
  
          findViewById(R.id.sign_in_button).setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  if (isNetworkAvailable()) {
                      signinProgressDialog.setMessage("Signing in...");
                      signinProgressDialog.show();
                      signIn();
                  } else {
                      Snackbar snackbar = Snackbar
                              .make(coordinatorLayout, "No internet connection!", Snackbar.LENGTH_LONG);
                      snackbar.show();
                      signinProgressDialog.dismiss();
                  }
              }
          });
  
      }
  
      private void signIn() {
          Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
          startActivityForResult(signInIntent, RC_SIGN_IN);
      }
  
      @Override
      public void onActivityResult(int requestCode, int resultCode, Intent data) {
          super.onActivityResult(requestCode, resultCode, data);
  
          // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
          if (requestCode == RC_SIGN_IN) {
              GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
              if (result.isSuccess()) {
                  // Google Sign In was successful, authenticate with Firebase
                  GoogleSignInAccount account = result.getSignInAccount();
                  firebaseAuthWithGoogle(account);
              } else {
                  // Google Sign In failed, update UI appropriately
                  // ...
                  Snackbar snackbar = Snackbar
                          .make(coordinatorLayout, "Error signing in!", Snackbar.LENGTH_LONG);
                  snackbar.show();
                  signinProgressDialog.dismiss();
              }
          }
      }
  
      private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
          Log.d("firebaseAuthWithGoogle", "firebaseAuthWithGoogle:" + acct.getId());
  
          AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
          mAuth.signInWithCredential(credential)
                  .addOnCompleteListener(this, new OnCompleteListener&lt;AuthResult&gt;() {
                      @Override
                      public void onComplete(@NonNull Task&lt;AuthResult&gt; task) {
                          Log.d("signin_successful", "signInWithCredential:onComplete:" + task.isSuccessful());
  
                          Intent mainActivityIntent = new Intent(SignupActivity.this, MainActivity.class);
                          mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                          mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                          startActivity(mainActivityIntent);
                          signinProgressDialog.dismiss();
  
                          // If sign in fails, display a message to the user. If sign in succeeds
                          // the auth state listener will be notified and logic to handle the
                          // signed in user can be handled in the listener.
                          if (!task.isSuccessful()) {
                              Log.w("signin_unsuccessful", "signInWithCredential", task.getException());
                              Toast.makeText(SignupActivity.this, "Authentication failed.",
                                      Toast.LENGTH_SHORT).show();
                              signinProgressDialog.dismiss();
                          }
                          // ...
                      }
                  });
      }
  
      @Override
      public void onBackPressed() {
          finish();
          super.onBackPressed();
      }
  
      private boolean isNetworkAvailable() {
          ConnectivityManager connectivityManager
                  = (ConnectivityManager) SignupActivity.this.getSystemService(Context.CONNECTIVITY_SERVICE);
          NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
          return activeNetworkInfo != null &amp;&amp; activeNetworkInfo.isConnected();
      }
  }
  </code></pre>
  
  <p>I have 2 client IDs, one is Web client and another is Android client.</p>
  
  <p>I have checked my client id's with my <code>google-services.json</code> file and my project on console.developers.google.com They all are matching.</p>
  
  <p>But I'm still getting this error: <code>E/TokenRequestor: You have wrong OAuth2 related configurations, please check. Detailed error: INVALID_AUDIENCE
  06-27 12:40:14.651 4443-4484/? D/AuthAccountOperation: id token request failed.</code></p>
  
  <p>What could possibly be causing this error?</p>
  
  <p>Is it so that my app is no longer connected to my app on my console or is it something else?</p>
  
  <p>Please let me know.</p>