Are you working with the new OAuth 2.0 tokens or the older OAuth system? New tokens expire in 6 hours, and the expires_in value you get when generating the token should reflect that.
Also, generating a new token will invalidate any previously generated token, so if you’re renewing a token early, it would deactivate the previous token before its original expiration time.