【问题标题】:API POST request - Python example to Google Script - 'Unexpected end of JSON input'API POST 请求 - Google 脚本的 Python 示例 - “JSON 输入意外结束”
【发布时间】:2021-11-09 05:01:16
【问题描述】:

我正在尝试使用 API POST 请求将 Google 电子表格连接到 snov.io 服务,他们提供了 Python 代码作为示例,我尝试基于它运行下面的 google 脚本,但没有成功。有任何想法吗?谢谢你:)

Python(本公司提供)

def get_access_token():
params = {
    'grant_type':'client_credentials',
    'client_id':'c57a0459f6t141659ea75cccb393c111',
    'client_secret': '77cbf92b71553e85ce3bfd505214f40b'
}

res = requests.post('https://api.snov.io/v1/oauth/access_token', data=params)
resText = res.text.encode('ascii','ignore')

return json.loads(resText)['access_token']

Google 脚本(错误:SyntaxError:'JSON 输入意外结束')

var params = {
    'grant_type':'client_credentials',
    'client_id':'c57a0459f6t141659ea75cccb393c111',
    'client_secret': '77cbf92b71553e85ce3bfd505214f40b',
    'method':'post'
}
var url = 'https://api.snov.io/v1/oauth/access_token';

var response = UrlFetchApp.fetch(url,params)
var json = response.getContentText();
    obj = JSON.parse(json);
    token = obj.result.access_token;
    return token

【问题讨论】:

    标签: python google-apps-script post urlfetch


    【解决方案1】:

    为了用你的 python 脚本实现相同的请求,如何修改你的 Google Apps 脚本如下?

    修改脚本:

    发件人:

    var params = {
        'grant_type':'client_credentials',
        'client_id':'c57a0459f6t141659ea75cccb393c111',
        'client_secret': '77cbf92b71553e85ce3bfd505214f40b',
        'method':'post'
    }
    var url = 'https://api.snov.io/v1/oauth/access_token';
    
    var response = UrlFetchApp.fetch(url,params)
    

    收件人:

    var params = {
      'grant_type': 'client_credentials',
      'client_id': 'c57a0459f6t141659ea75cccb393c111',
      'client_secret': '77cbf92b71553e85ce3bfd505214f40b',
    }
    var url = 'https://api.snov.io/v1/oauth/access_token';
    var response = UrlFetchApp.fetch(url, {method: "post", payload: params});
    
    • 在这种情况下,即使删除了method: "post",也能实现相同的请求。

    参考:

    【讨论】:

    • 您好田池,感谢您的快速回复。 UrlFetchApp 工作!但是在那之后它没有显示任何结果,当我尝试获取他们的令牌时,它显示错误:“无法读取未定义的属性'access_token'”。我可能需要联系 Snov 来检查我的凭据。
    • @SKuan 感谢您的回复。我很高兴你的问题得到了解决。以Cannot read property 'access_token' of undefined为例,你确认console.log(response.getContentText())的返回值了吗?如果不包含访问令牌,我同意contact Snov
    • @SKuan 顺便说一句,当您将 python 脚本转换为 Google Apps 脚本的问题得到解决后,请按下接受按钮。与您有相同问题的其他人也可以将您的问题作为可以解决的问题。我认为您的问题和解决方案将对他们有用。如果找不到按钮,请随时告诉我。 stackoverflow.com/help/accepted-answer
    • 感谢您的解释。 console.log(response.getContentText()) 返回了一些数据,我能够弄清楚发生了什么!所以我不得不从 (token = obj.result.access_token) 中删除“结果”。问题标记为已解决,感谢您的帮助!
    • @SKuan 感谢您的回复。我很高兴你的问题得到了解决。也谢谢你。
    猜你喜欢
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    相关资源
    最近更新 更多