0

我一直在尝试使用 oAuth 对 3rd 方服务进行身份验证,但在 UrlFetchApp.fetch() 阶段出现“意外错误”。这促使我用 Twitter 替换 3rd 方服务,其示例在其中一个教程中提供,我也看到 twitter 存在同样的问题。

这是我的代码。

function testTwitter() {
  var oauth = UrlFetchApp.addOAuthService('twitter');
  oauth.setRequestTokenUrl('https://api.twitter.com/oauth/request_token');
  oauth.setAuthorizationUrl('https://api.twitter.com/oauth/authorize');
  oauth.setAccessTokenUrl('https://api.twitter.com/oauth/access_token');
  oauth.setConsumerKey('CONSUMER_KEY');
  oauth.setConsumerSecret('CONSUMER_SECRET');

  var url = 'https://api.twitter.com/1/statuses/mentions.json'; 
  try{
    var options = {
      "oAuthServiceName" : "twitter",
      "oAuthUseToken" : "always",
      "method":"GET"
    };
     var resp = UrlFetchApp.fetch(url,options);
      Logger.log(resp.getContentText());
  }catch(ex){
    Logger.log(ex);
  }
}

当我看到日志时,我看到在 UrlFetchApp.fetch 阶段抛出了以下内容。

Exception: Unexpected error: 

我错过了什么吗?回调 URL 是否必要?如果是,我在哪里指定它?

4

2 回答 2

2

我已经在 twitter 上使用了您的代码,如果您按照 Apps 脚本页面中的教程操作,它可以正常工作:https ://developers.google.com/apps-script/articles/twitter_tutorial

主要是检查设置 Twitter部分。您必须设置您的 twitter 以使用您的脚本。这是为您的 twitter 设置新应用程序的链接:http: //dev.twitter.com/apps/new

编辑:这也应该适用于您正在使用的其他 3rd 方服务。

于 2012-10-16T18:42:00.103 回答
1

我创建了上面脚本的一个版本,按照上面的教程设置了 Twitter(包括指定的回调 URL),一切都很好......直到昨天下午。

     function tweet() {
   // Setup OAuthServiceConfig
   var oAuthConfig = UrlFetchApp.addOAuthService("twitter");
   oAuthConfig.setAccessTokenUrl("http://api.twitter.com/oauth/access_token");
   oAuthConfig.setRequestTokenUrl("http://api.twitter.com/oauth/request_token");
   oAuthConfig.setAuthorizationUrl("http://api.twitter.com/oauth/authorize");
   oAuthConfig.setConsumerKey(ScriptProperties.getProperty("twitterConsumerKey"));
   oAuthConfig.setConsumerSecret(ScriptProperties.getProperty("twitterConsumerSecret"));

   // Setup optional parameters to point request at OAuthConfigService.The "twitter"
   // value matches the argument to "addOAuthService" above.
   var options =
     {
        muteHttpExceptions : true,
       "oAuthServiceName" : "twitter",
       "oAuthUseToken" : "always"
     };
   var_url='https://api.twitter.com/1.1/search/tweets.jsonq=hello&count=5&include_entities=true&result_type=recent';
   var result = UrlFetchApp.fetch(url,options);
   var tweets  = Utilities.jsonParse(result);

出于某种原因,我现在收到 OAuth 错误。我添加了 muteHTTPExceptions = true 并且消息显示“无法对服务进行身份验证:twitter”。

我做了以下事情:

  • 检查了执行文件,可以看到我的密钥和秘密是从项目属性中提取的

  • 使用相同的密钥和秘密从 Twitter 生成了一个 CURL,以仔细检查它们是否正常工作(它们是正常的,我得到了预期的响应)

  • 将我的 google 脚本部署为 webapp(以防万一这里出现某种权限错误)

有人知道我还能检查什么吗?有点卡在这里...

非常感谢任何帮助:)

于 2014-03-08T11:32:18.827 回答