2012-04-26 76 views
8

我一直在试图使用OAuth在Google apps script访问trello数据的工作,但似乎OAuthService API使得了解OAuth服务的一些假设和trello不起作用那样。谷歌Apps脚本的OAuth连接不使用Trello

以下代码有效。它获得的访问Twitter的(这是从谷歌的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不知道怎么回重定向,所以我去询问我手动复制粘贴一个令牌(但谷歌并没有向我提供插入该令牌的方法)

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的授权链接

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 

但两者不工作。难道我做错了什么?我是否缺少一些我应该提供的配置参数?

+0

导致此问题已得到修复的bug。 – 2012-05-03 14:58:56

回答

10

此行为是由于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()); 
} 
+0

谢谢!无论是为了解决问题的答案和(我猜)! – Jauco 2012-04-27 08:20:11

+1

是的,我也验证过它。 – Jauco 2012-05-04 08:23:30