【问题标题】:Google apps script oauth connect doesn't work with trelloGoogle 应用程序脚本 oauth connect 不适用于 trello
【发布时间】:2012-05-07 04:24:57
【问题描述】:

我一直在尝试使用Google apps script 中的 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“按确定返回”页面,但 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);
}

我试图通过在授权 url 中手动添加我提供给 twitter 的重定向回调来解决这个问题

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

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

【问题讨论】:

  • 导致此问题的bug已修复。

标签: oauth google-apps-script trello


【解决方案1】:

这种行为是由于a bug in the 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());
}

【讨论】:

  • 谢谢!既是为了答案,也是为了(我猜)修复错误!
  • 是的,我也验证过了。
猜你喜欢
  • 2020-04-27
  • 2020-11-05
  • 1970-01-01
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多