Когда я использую любой из стандартных клиентов, согласно документации, я передаю ключ области в аргументе client_kwargs.
# Example config.py for Flask application
HAMSTER_API_BASE_URL = 'http://api:5000/'
HAMSTER_ACCESS_TOKEN_URL = 'http://api:5000/oauth/token'
HAMSTER_CLIENT_ID = 'CLIENT'
HAMSTER_CLIENT_SECRET = 'SECRET'
HAMSTER_CLIENT_KWARGS = {
'grant_type': 'client_credentials',
'scope': 'api'
}
Серверная часть также реализуется с использованием Authlib.При попытке получить токен с помощью гранта ClientCredentialsGrant область действия на стороне сервера теряется.В результате токен не работает, сервер выдает его, но без области.
from authlib.flask.client import OAuth
def fetch_hamster_token():
name = 'hamster'
token = OAuth2Token.get(name=name)
if token:
delta = token.expires_at - datetime.now().timestamp()
if delta > 60:
return token.to_token()
token = getattr(oauth, name).fetch_access_token(timeout=30)
save_hamster_token(token)
return token
oauth = OAuth()
oauth.register('hamster', fetch_token=fetch_hamster_token)
Если вы используете curl, то эта проблема не наблюдается.
Что я делаю не так?И извините за гугл переводчик