调用Nutritionix API从cfg文件取密钥为何出现401 Unauthorized错误?
解决Nutritionix API 401错误:从配置文件读取密钥失败的问题
可能的原因及解决方案
1. 配置文件格式存在多余字符
检查你的secrets.cfg文件,确保键值对没有多余空格、引号或换行符,正确格式应为:
[nutritionix] API_ID=你的真实App ID API_KEY=你的真实App密钥
注意:等号前后不要加空格,不要给ID/密钥添加引号,否则读取的字符串会包含这些无效字符,导致API验证失败。
2. 读取后去除字符串空白字符
即使打印时看起来正常,读取的字符串可能包含隐藏的换行符、空格(比如配置文件末尾的换行)。修改代码,对读取的密钥调用strip()方法:
x_app_id = config['nutritionix']['API_ID'].strip() x_app_key = config['nutritionix']['API_KEY'].strip()
该方法会去除字符串首尾的空格、换行符、制表符等空白字符,确保传递给API的是纯净的密钥内容。
3. 验证读取字符串的真实内容
用repr()替代普通print()查看字符串的真实形态,确认是否存在隐藏字符:
print(repr(x_app_id)) print(repr(x_app_key))
如果输出包含\n、空格或引号,说明读取的内容存在问题,需要修正配置文件或进一步处理字符串。
4. 检查配置文件编码
确保secrets.cfg采用UTF-8无BOM编码格式。如果是带BOM的UTF-8,configparser读取时可能会在字符串开头加入隐藏的BOM字符,导致API验证失败。可以用记事本或VS Code重新保存文件,选择UTF-8无BOM编码。
内容的提问来源于stack exchange,提问作者Subhendu Dash
相关产品推荐
相关产品推荐

