Google应用脚本oauth connect不适用于trello

Jau*_*uco 8 oauth google-apps-script trello

我一直在尝试在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);
}
Run Code Online (Sandbox Code Playgroud)

以下代码将让我进入trello"按下确定后退"页面,但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");
  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);
}
Run Code Online (Sandbox Code Playgroud)

我尝试通过手动添加我在授权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
Run Code Online (Sandbox Code Playgroud)

要么

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
Run Code Online (Sandbox Code Playgroud)

但两者都不起作用.难道我做错了什么?我错过了一些我应该提供的配置参数吗?

Dan*_*ant 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());
}
Run Code Online (Sandbox Code Playgroud)