Snov.io Python API POST示例转Google Script报JSON解析错误求解
问题原因定位
1. 核心错误:UrlFetchApp参数结构错误
Python的requests.post方法会将data参数的内容直接作为表单请求体发送,但Google Script的UrlFetchApp.fetch的第二个参数是请求配置对象,请求体数据必须放在配置的payload属性中。你现在把grant_type、client_id这类鉴权参数直接和method平级放在配置外层,导致实际发出的请求携带空请求体,接口返回了非JSON格式的错误响应或空响应,JSON解析时就触发了Unexpected end of JSON input错误。
2. 次要错误:返回值取值路径错误
Snov.io的oauth接口返回的access_token直接在响应JSON的根节点下,你代码中多写了一层.result,就算请求成功也会触发取值报错。
修复后代码
function getSnovAccessToken() { var params = { 'method': 'post', // 所有请求体参数放在payload字段中 'payload': { 'grant_type':'client_credentials', 'client_id':'c57a0459f6t141659ea75cccb393c111', 'client_secret': '77cbf92b71553e85ce3bfd505214f40b' } } var url = 'https://api.snov.io/v1/oauth/access_token'; try { var response = UrlFetchApp.fetch(url, params); var jsonStr = response.getContentText(); // 排查时可打开下方日志打印,查看接口实际返回内容 // Logger.log(jsonStr); var obj = JSON.parse(jsonStr); // 直接从根节点取access_token return obj.access_token; } catch (e) { Logger.log('错误信息:' + e.toString()); if (response) { Logger.log('接口返回内容:' + response.getContentText()); } return null; } }
排查建议
如果修改后仍报错,可打开Google Script的日志面板查看打印的接口返回内容,确认是否是client_id、client_secret填写错误导致鉴权失败,返回了非JSON格式的错误提示。
内容的提问来源于stack exchange,提问作者SKuan
相关产品推荐
相关产品推荐

