运行Uber API代码报错:AttributeError: 'str' object has no attribute 'is_stale'
问题原因与解决方案
问题原因
你错误地将字符串格式的访问令牌直接传给了Session类的oauth2credential参数。该参数要求传入的是OAuth2Credential对象,而非纯字符串。当代码后续尝试调用credential.is_stale()方法时,由于当前credential是字符串类型,不存在该方法,因此抛出AttributeError。
修正后的代码
from uber_rides.session import Session, OAuth2Credential from uber_rides.client import UberRidesClient ACCESS_TOKEN = "[redacted]" # 先创建OAuth2Credential对象,替换原字符串直接传入的方式 credential = OAuth2Credential( access_token=ACCESS_TOKEN, expires_in_seconds=86400, # 根据你的令牌实际有效期调整,示例为1天 scopes=[], # 若需特定权限范围,可在此添加,如['request'] grant_type='authorization_code' # 根据你的授权类型修改,如client_credentials ) session = Session(oauth2credential=credential) client = UberRidesClient(session) response = client.get_products(37.77, -122.41)
说明
通过先实例化OAuth2Credential对象,将其传入Session,就能满足客户端对凭证对象的方法调用要求,解决is_stale属性不存在的错误。
内容的提问来源于stack exchange,提问作者Sean Landeta
相关产品推荐
相关产品推荐

