Robin-stocks库Robinhood MFA认证失效,登录触发KeyError: 'detail'
Robin-stocks库Robinhood MFA认证失效,登录触发KeyError: 'detail'
我最近也碰到了一模一样的问题!看来不是你一个人遇到这个情况,不少使用robin-stocks的开发者都在反馈12月中旬开始的这个登录故障。
问题根源分析
从你提供的报错信息和返回的data内容来看,核心问题是Robinhood的认证API返回结构发生了变更:
- 原来的登录逻辑会尝试从接口返回的
data中读取'detail'字段抛出异常,但现在接口返回的是包含verification_workflow的对象,完全没有'detail'字段,直接导致了KeyError。 - 你怀疑的
client_id问题确实有很大可能——Robinhood经常会限制旧的第三方客户端ID,原来库中内置的c82SH0WZOsabOXGP2sxqcj34FxkvfnWRZBKlBjFS可能已经被官方禁用,无法再通过该ID发起认证请求。
可行的解决方向
- 优先升级robin-stocks库:很多时候这种API变更,库的维护者会快速跟进修复。执行以下命令升级到最新版本:
pip install --upgrade robin-stocks - 替换合法的client_id:如果升级后问题依旧,你可以通过抓包Robinhood官方APP的登录请求,获取当前官方使用的有效
client_id,替换掉authentication.py中payload里的旧ID。 - 临时修复KeyError问题:可以先修改本地库的
authentication.py文件,避免直接因缺失'detail'字段崩溃,同时添加对新返回结构的判断:# 找到原代码中的raise Exception(data['detail'])部分,替换为: if 'detail' in data: raise Exception(data['detail']) elif 'verification_workflow' in data: raise Exception(f"需要完成额外验证流程,Workflow ID: {data['verification_workflow']['id']}") else: raise Exception(f"登录失败,未知响应内容: {str(data)}") - 适配新的验证流程:返回的
verification_workflow说明现在需要完成额外的验证步骤(比如邮件/短信验证),原来直接传MFA code的方式已经不适用。你需要根据返回的workflow信息,调用对应的接口完成验证后,再继续登录流程。
备注:内容来源于stack exchange,提问作者emmanuelsa
相关产品推荐
相关产品推荐

