[ecobee] Improve handling of invalid_grant error (#8857)

Signed-off-by: Mark Hilbush <mark@hilbush.com>
This commit is contained in:
Mark Hilbush 2020-10-27 11:10:03 -04:00 committed by GitHub
parent 472c0fd960
commit a84222cf5e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -170,13 +170,24 @@ public class EcobeeApi implements AccessTokenRefreshListener {
logger.info("API: The Ecobee authorization process threw an exception", e);
ecobeeAuth.setState(EcobeeAuthState.NEED_PIN);
} catch (OAuthResponseException e) {
logger.info("API: Exception getting access token: error='{}', description='{}'", e.getError(),
e.getErrorDescription());
// How to handle the possible error codes?
handleOAuthException(e);
}
return isAuthorized;
}
private void handleOAuthException(OAuthResponseException e) {
if ("invalid_grant".equalsIgnoreCase(e.getError())) {
// Usually indicates that the refresh token is no longer valid and will require reauthorization
logger.warn("API: Received 'invalid_grant' error response. Please reauthorize application with Ecobee");
deleteOAuthClientService();
createOAuthClientService();
} else {
// Other errors may not require reauthorization and/or may not apply
logger.warn("API: Exception getting access token: error='{}', description='{}'", e.getError(),
e.getErrorDescription());
}
}
@Override
public void onAccessTokenResponse(AccessTokenResponse accessTokenResponse) {
}