[英]Can't send twitter post from Google Apps Script
我是google apps script
新手,正在尝试通过脚本在Twitter上发布消息,但是每次运行脚本时遇到此错误,
您无权访问脚本使用的OAuth1库,或者该库已被删除。
我已经在库中添加了TwtrService
并选择了最新版本15
。 这是我的代码,
function main()
{
var TWITTER_CONSUMER_KEY = "MY_KEY";
var TWITTER_CONSUMER_SECRET = "MY_SECRET";
ScriptProperties.setProperty("TWITTER_CONSUMER_KEY", TWITTER_CONSUMER_KEY);
ScriptProperties.setProperty("TWITTER_CONSUMER_SECRET", TWITTER_CONSUMER_SECRET);
login();
tweet("Hi there from Google Apps Script");
}
function login()
{
var loginConfig = UrlFetchApp.addOAuthService("twitter");
loginConfig.setAccessTokenUrl("https://api.twitter.com/oauth/access_token");
loginConfig.setRequestTokenUrl("https://api.twitter.com/oauth/request_token");
loginConfig.setAuthorizationUrl("https://api.twitter.com/oauth/authorize");
loginConfig.setConsumerKey(ScriptProperties.getProperty("TWITTER_CONSUMER_KEY"));
loginConfig.setConsumerSecret(ScriptProperties.getProperty("TWITTER_CONSUMER_SECRET"));
}
function tweet(text)
{
var params =
{
"method": "POST",
"oAuthServiceName":"twitter",
"oAuthUseToken":"always"
};
var status = "https://api.twitter.com/1.1/statuses/update.json";
status = status + "?status=" + text;
try
{
var success = UrlFetchApp.fetch(status, params);
Logger.log(success.getContentText());
}
catch(ex)
{
Logger.log(ex.toString());
}
}
如何解决这个问题? 如何访问图书馆OAuth1? 急需此帮助! 谢谢。
转到Google脚本编辑器,然后按照以下说明进行操作:( 源 )
Apps脚本不再支持OAuth的“ oAuthServiceName”方法。 新方法具有不同的API,涉及创建一个新的OAuth1对象(由Amit Agarwal的答案中引用的库提供),然后使用该对象来获取而不是直接调用UrlFetchApp.fetch
。代码看起来像
function login() {
return OAuth1.createService("twitter")
.setPropertyStore(PropertiesService.getScriptProperties())
.setAccessTokenUrl("https://api.twitter.com/oauth/access_token")
.setRequestTokenUrl("https://api.twitter.com/oauth/request_token")
.setAuthorizationUrl("https://api.twitter.com/oauth/authorize")
.setConsumerKey(ScriptProperties.getProperty("TWITTER_CONSUMER_KEY"))
.setConsumerSecret(ScriptProperties.getProperty("TWITTER_CONSUMER_SECRET"));
}
function tweet(text) {
var oauth = login();
var status = "https://api.twitter.com/1.1/statuses/update.json";
oauth.fetch(status + "?status=" + text, {method : "POST"});
}
但是,我建议使用我的Twitter lib for Apps Script,因为它为您设置了正确的终结点和查询带来了很多繁重的工作。 它建立在OAuth1之上,因此,即使您仍然可以直接访问fetch()
,您也可以将所有配置都转储到ScriptProperties中,调用new Twitterlib.OAuth(PropertiesService.getScriptProperties()).sendTweet(text);
,安装程序将由您处理。
Twitter Lib的密钥是MKvHYYdYA4G5JJHj7hxIcoh8V4oX7X1M_
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.