繁体   English   中英

无法通过Google Apps脚本发送Twitter帖子

[英]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脚本编辑器,然后按照以下说明进行操作:(

  1. 单击菜单项“资源>库...”
  2. 在“查找库”文本框中,输入项目密钥,然后单击“选择”按钮。 Mb2Vpd5nfD3Pz-_a-39Q4VfxhMjh3Sh48
  3. 在下拉框中选择一个版本(通常最好选择最新版本)。 点击“保存”按钮。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM