根据文档,当我使用任何标准客户端时,我会在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)
如果使用卷曲,则不会出现此问题。
我在做什么错?对不起,Google翻译人员