Gitea: How to fix Authentication Failed, but works when trying again

When using Gitea with the standard configuration, it will often generate an error message like this:

remote: Verify
fatal: Authentication failed for 'https://gitea.mydomain.com/myuser/MyProject.git/'

but when just retrying, it will succeed

Why this error occurs

Gitea authentication is based on OAuth2 tokens. The reason why it fails first-try is that the authentication token is, by default, only valid for 1 hour, and it has expired already.

On the second try, the client will automatically refresh the token, and it will work for one hour.

How to fix it

Instead of using the default token expiration time, you can set it to a longer time, e.g. 24 hours. Consider potential security implications of this.

Edit app.ini and set the following:

[oauth2]
ACCESS_TOKEN_EXPIRATION_TIME = 86400

then, restart Gitea. New tokens will now be valid for 24 hours. You can also set it to a longer timeframe, but 24 hours is often a good compromise between usability and security. In case you want to use a longer timeframe, set ACCESS_TOKEN_EXPIRATION_TIME to the number of seconds you want the token to be valid, or N*3600 where N is the number of hours.