import os from flask_dance.consumer import OAuth2ConsumerBlueprint CREDENTIALS_DIR = os.getenv("CREDENTIALS_DIR", "") class OAuth2ConsumerBlueprintWithClientRefresh(OAuth2ConsumerBlueprint): """Same as flask_dance.consumer.OAuth2ConsumerBlueprint, but loads client credentials from file.""" def refresh_credentials(self): with open(os.path.join(CREDENTIALS_DIR, "authcode-client-id")) as fd: # note that we need to set two attributes because of how OAuth2ConsumerBlueprint works :-/ self._client_id = self.client_id = fd.read().strip() with open(os.path.join(CREDENTIALS_DIR, "authcode-client-secret")) as fd: self.client_secret = fd.read().strip() def login(self): self.refresh_credentials() return super().login()