2012-04-26 5 views
8

Ich habe versucht, oAuth in Google apps script zu verwenden, um auf Trello-Daten zuzugreifen, aber es scheint, dass die OAuthService-API einige Annahmen über den oAuth-Dienst macht und dass Trello nicht funktioniert dieser Weg.Google Apps-Skript oauth connect funktioniert nicht mit Trello

Der folgende Code funktioniert. Es erhält den Zugang zu twitter (dies ist aus dem Google-oauth Tutorial):

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); 
} 

Der folgende Code mich auf die Trello „ok drücken, um wieder“ erhält Seite, aber Trello nicht weiß, wie zurück zu umleiten, so dass ich auf eine Seite, die ich fragt ein Token manuell kopiert einfügen (aber google mich nicht schaffen, mit Methode dieser Token einfügen)

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); 
} 

ich habe versucht, das zu beheben, indem Sie die Umleitung Rückruf manuell hinzu, dass Ich biete auf Twitter in der Autorisierung 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 

oder

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 

Aber beide nicht funktionieren. Mache ich etwas falsch? Fehle ich einige Konfigurationsparameter, die ich bereitstellen sollte?

+0

Der Fehler, der dieses Problem behoben verursacht hat. –

Antwort

10

Dieses Verhalten ist auf a bug in the Trello API zurückzuführen; Google versucht, eine oauth_callback bereitzustellen, wenn es sein Autorisierungstoken erhält, aber Trello leitete es nicht um, wenn Sie die Tokenanforderung genehmigen.

Dieser Fehler ist inzwischen gelöst worden, und ich habe festgestellt, dass der folgende Code funktioniert:

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

Danke! Sowohl für die Antwort als auch (denke ich) für die Fehlerbehebung! – Jauco

+1

Ja, ich habe es auch überprüft. – Jauco