发送推文失败。错误是: {"name":"异常"} - Google App Script



要收集从我的个人资料发送的电报消息,在电子表格中注册并从这些消息创建tweet,我设置了以下模型:

var token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
var telegramUrl = "https://api.telegram.org/bot" + token;
var webAppUrl = "https://script.google.com/macros/s/UUUUUUUUUUUUUUUUUUUUUUUUUUU";
function setWebhook() {
var url = telegramUrl + "/setWebhook?url=" + webAppUrl;
var response = UrlFetchApp.fetch(url);
}
function doPost(e) {
var contents = JSON.parse(e.postData.contents);
var dateNow = Utilities.formatDate(new Date(), "GMT-03:00", "yyyy-MM-dd' 'HH:mm:ss' '");
var id = contents.message.from.id;
if (id != 123456789) return;
var username = contents.message.from.username;
var name = contents.message.from.first_name + " " + contents.message.from.last_name;
var text = contents.message.text;

if (!text) return;

var ssId = "ID TO SPREADSHEET";
var sheet = SpreadsheetApp.openById(ssId).getSheetByName("SPREADSHEET NAME");

sheet.appendRow([dateNow, id, username, name, text]);

var twitterKeys= {
TWITTER_CONSUMER_KEY: "<<consumer key>>",
TWITTER_CONSUMER_SECRET: "<<consumer secret>>",
TWITTER_ACCESS_TOKEN: "<<access token>>",
TWITTER_ACCESS_SECRET: "<<access secret>>"
};

var props = PropertiesService.getScriptProperties();

props.setProperties(twitterKeys);
twit = new Twitter.OAuth(props);
var service = new Twitter.OAuth(props);

if ( service.hasAccess() ) {

var response = twit.sendTweet(text);

if (response) {

Logger.log("Tweet ID " + response.id_str);

} else {

// Tweet could not be sent
// Go to View -> Logs to see the error message

}
}
}

我使用的与Twitter名称一致的库是:

MKvHYYdYA4G5JJHj7hxIcoh8V4oX7X1M_

但是tweet没有被发送,当我尝试单独使用tweet的发送部分时,消息Send tweet failure. Error was: {"name": "Exception"}出现在日志记录中。

分隔发送测试:

function sendTweet(status) {
status = status || "Teste";
var twitterKeys= {
TWITTER_CONSUMER_KEY: "<<consumer key>>",
TWITTER_CONSUMER_SECRET: "<<consumer secret>>",
TWITTER_ACCESS_TOKEN: "<<access token>>",
TWITTER_ACCESS_SECRET: "<<access secret>>"
};
var props = PropertiesService.getScriptProperties();
props.setProperties(twitterKeys);
twit = new Twitter.OAuth(props);

var service = new Twitter.OAuth(props);
if ( service.hasAccess() ) {
var response = twit.sendTweet(status);
if (response) {
Logger.log("Tweet ID " + response.id_str);
} else {
// Tweet could not be sent
// Go to View -> Logs to see the error message
}
}
}

我想在脚本中编辑一些我需要的帮助,以便在电报上收集的消息成为文本,并作为新的tweet发送到Twitter。

修改点:

当我使用以下示例脚本使用您提供的令牌测试发布文本时,

const url = "https://api.twitter.com/1.1/statuses/update.json"
const params = {muteHttpExceptions: true, "method":"POST","payload":"status=test","headers":{"Authorization":"###"},"escaping":false};
const res = UrlFetchApp.fetch(url, params);
console.log(res.getContentText())

我确认了{"request":"/1.1/statuses/update.json","error":"Read-only application cannot POST."}的错误信息。从这个错误消息来看,您当前问题的原因似乎是由于您的twitter帐户的应用程序端使用twitter API的设置。遗憾的是,此错误信息并未显示在您正在使用的库中。遗憾的是,无法直接找到问题的原因。

为此,请从"阅读"中修改应用程序对twitter API的权限。到"读写";和"读+写+直接消息"。修改权限后,请获取新的访问令牌和密码。通过这个流程,当使用新的访问令牌和密钥时,脚本就可以工作了。

参考:

  • Twitter开发者应用

相关内容

最新更新