google-api-nodejs-client icon indicating copy to clipboard operation
google-api-nodejs-client copied to clipboard

"Precondition check failed" with gmail client + oauth2

Open jamiedavenport opened this issue 1 year ago • 2 comments

I've setup Google OAuth with Lucia and storing the refresh token in the database.

I've tried to create a gmail client like so, using the stored refresh token:

export async function createGmailClient(refreshToken: string) {
  const auth = new google.auth.OAuth2(clientId, clientSecret, redirectUri);
  auth.setCredentials({ refresh_token: refreshToken });

  return google.gmail({ version: "v1", auth });
}

And then listing messages like so:

const messages = await client.users.messages.list({
      userId: "me",
    });

But I'm getting a 400 - Precondition check failed. error which is strange to see since most reports talk about this error with service accounts.

I'm assuming that I've setup the OAuth2 client incorrectly but the error messages aren't very helpful. Any help here would be hugely appreciated.

jamiedavenport avatar Aug 04 '24 11:08 jamiedavenport

Hi @jamiedavenport,

We have the same issue with the Ruby Gmail Client and also using OAuth authentication.

When we try to send an email for one of our users, we have this "Precondition check failed" error. For the other users (using other Google Workspace accounts), it works perfectly.

And we don't know why it happens for this specific user...

rnuyts avatar Aug 26 '24 09:08 rnuyts

Anyone got this work ?

juslin03 avatar Sep 27 '24 23:09 juslin03