2012-04-26 34 views
8

Tôi đã cố gắng sử dụng oAuth trong Google apps script để truy cập dữ liệu trello, nhưng có vẻ như API OAuthService đưa ra một số giả định về dịch vụ oAuth và trello đó không hoạt động theo cách đó.Google Apps script oauth connect không hoạt động với trello

Mã sau hoạt động. Nó có được của quyền truy cập vào twitter (đây là từ hướng dẫn oauth google):

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

Các mã sau đây sẽ làm cho tôi đến Trello "bấm ok để lấy lại" trang, nhưng Trello không biết làm thế nào để chuyển hướng trở lại, vì vậy tôi có được đến một trang yêu cầu phải tự sao chép dán một mã thông báo (nhưng google không cung cấp cho tôi với một phương pháp chèn token)

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

tôi cố gắng để khắc phục điều đó bằng cách thủ công thêm callback chuyển hướng Tôi cung cấp cho twitter trong url ủy quyền

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 

hoặc

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 

Nhưng cả hai không làm việc. Tôi có làm điều gì sai? Tôi có thiếu một số thông số cấu hình mà tôi nên cung cấp không?

+0

Các lỗi đã gây ra vấn đề này đã được sửa. –

Trả lời

10

Hành vi này là do a bug in the Trello API; Google đang cố gắng cung cấp oauth_callback khi nhận mã thông báo ủy quyền, nhưng Trello không chuyển hướng đến đó khi bạn phê duyệt yêu cầu mã thông báo.

Lỗi này từ đó đã được giải quyết, và tôi đã xác minh rằng đoạn mã sau hoạt động:

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

Cảm ơn! Cả hai cho câu trả lời và (tôi đoán) để sửa lỗi! – Jauco

+1

Có, tôi cũng đã xác minh nó. – Jauco

Các vấn đề liên quan