22 lines
802 B
Python
22 lines
802 B
Python
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()
|