谷歌应用脚本OAuth连接无法与Trello配合使用

8
我一直在尝试在Google应用脚本中使用oAuth来访问Trello数据,但是似乎OAuthService API对oAuth服务有一些假设,而Trello并不是这样工作的。
以下代码可以正常工作。它可以访问Twitter(这是来自Google OAuth教程的内容)。
function authorizeToTwitter() {
  var oauthConfig = UrlFetchApp.addOAuthService("twitter");
  oauthConfig.setAccessTokenUrl("https://api.twitter.com/oauth/access_token");
  oauthConfig.setRequestTokenUrl("https://api.twitter.com/oauth/request_token");
  oauthConfig.setAuthorizationUrl("https://api.twitter.com/oauth/authorize");
  oauthConfig.setConsumerKey(<CONSUMER KEY>);
  oauthConfig.setConsumerSecret(<CONSUMER SECRET>);
  var requestData = {
    "method": "GET",
    "oAuthServiceName": "twitter",
    "oAuthUseToken": "always"
  };
  var result = UrlFetchApp.fetch("https://api.twitter.com/1/statuses/mentions.json", requestData);
}

以下代码可以将我带到trello的“按下ok返回”页面,但是trello不知道如何重定向回来,所以我会进入一个页面,要求我手动复制粘贴一个令牌(但Google没有提供插入该令牌的方法)。
function authorizeToTrello() {
  var oauthConfig = UrlFetchApp.addOAuthService("trello");
  oauthConfig.setAccessTokenUrl("https://trello.com/1/OAuthGetAccessToken");
  oauthConfig.setRequestTokenUrl("https://trello.com/1/OAuthGetRequestToken");
  oauthConfig.setAuthorizationUrl("https://trello.com/1/OAuthAuthorizeToken");
  oauthConfig.setConsumerKey(<CONSUMER KEY>);
  oauthConfig.setConsumerSecret(<CONSUMER SECRET>);
  var requestData = {
    "method": "GET",
    "oAuthServiceName": "trello",
    "oAuthUseToken": "always"
  };
  var result = UrlFetchApp.fetch(
      "https://api.trello.com/1/members/me/boards",
      requestData);
}

我试图通过手动添加回调重定向来修复这个问题,将其提供给 Twitter 并在授权 URL 中使用。
oauthConfig.setAuthorizationUrl("https://trello.com/1/OAuthAuthorizeToken?return_url=https://docs.google.com/macros"); //this is what the tutorial says I should provide to twitter

或者
oauthConfig.setAuthorizationUrl("https://trello.com/1/OAuthAuthorizeToken?return_url=https://docs.google.com/macros/externaloauthcallback"); //this is what twitter actually calls when performing the oauth dance

但是两者都不起作用。我做错了什么吗?我是否遗漏了一些应该提供的配置参数?

导致这个问题的错误已经被修复。 - Daniel LeCheminant
1个回答

10

这个行为是由于Trello API 的一个问题引起的。当 Google 获得授权令牌时,它试图提供一个oauth_callback,但是在您批准令牌请求时,Trello 没有将其重定向到那里。

此问题已经得到解决,我已经验证以下代码可以正常工作:

function authorizeToTrello() {
  var oauthConfig = UrlFetchApp.addOAuthService("trello");
  oauthConfig.setAccessTokenUrl("https://trello.com/1/OAuthGetAccessToken");
  oauthConfig.setRequestTokenUrl("https://trello.com/1/OAuthGetRequestToken");
  oauthConfig.setAuthorizationUrl("https://trello.com/1/OAuthAuthorizeToken");

  // Replace these with the values you get from 
  // https://trello.com/1/appKey/generate
  oauthConfig.setConsumerKey("Consumer Key");
  oauthConfig.setConsumerSecret("Consumer Secret");

  var requestData = {
    "method": "GET",
    "oAuthServiceName": "trello",
    "oAuthUseToken": "always"
  };

  var result = UrlFetchApp.fetch(
      "https://api.trello.com/1/members/me/boards",
      requestData);

  Logger.log(result.getContentText());
}

谢谢!感谢您的回答和(我猜)修复了这个错误! - Jauco
1
是的,我也已经验证过了。 - Jauco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接