2012-04-26 3 views
8

Google apps script에 oAuth를 사용하여 trello 데이터에 액세스하려고했지만 OAuthService API가 oAuth 서비스에 대한 몇 가지 가정을하고 trello가 작동하지 않는 것으로 보입니다 그런 식으로.Google Apps 스크립트 oauth connect가 trello와 작동하지 않습니다

다음 코드가 작동합니다. ,

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 다시 리디렉션하는 방법을 알고하지 않습니다 : 그것은 (이것은 구글의 OAuth는 튜토리얼입니다)의 트위터에 접근 그래서 나는 내가 수동으로 토큰을 붙여 (하지만 구글은 그 토큰을 삽입하는 방법으로 날을 제공하지 않습니다) 나는 것을 해결하기 위해 노력

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

이 문제가 수정되었습니다 발생하는 버그. –

답변

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

+1

예, 확인한 바 있습니다. – Jauco