2014-01-10 36 views
1

我在Node.js中創建了一個小型服務器來處理Rally POST請求。這一直工作,直到我更新到Rally v2.0 API。使用新的授權模式,我不知道我必須對我的服務器執行什麼操作,以便不再執行'未授權執行操作:無效密鑰'。我閱讀了Rally授權文檔,但我不確定如何在服務器中應用它。以下是我不能工作的:Rally:Node.js中的v2.0 API授權來處理POST請求

var express = require('express'); 
var app = express(); 
var sys = require('util'); 
var client = require('restler'); 
var userNamePassword = { 'username': 'myusername', 'password': 'mypassword' }; 
app.use(express.bodyParser()); 

app.all('/rally/projectpermission/create', function(req, res) 
{ 
    client.get("https://rally.eng.xxxx.com/slm/webservice/v2.0/security/authorize", userNamePassword) 
    .on('complete', function(data, response) 
    { 
    var result = JSON.parse(data); 
    var operationResult = result['OperationResult']; 
    securityToken = operationResult['SecurityToken']; 

    var p = 'https://rally.eng.xxxx.com/slm/webservice/v2.0/projectpermission/create?key=_SECURITY_TOKEN_'.replace('_SECURITY_TOKEN_', securityToken); 

    client.postJson(p, req.body, userNamePassword) 
    .on('complete', function(data, response) 
    { 
     res.header("Access-Control-Allow-Origin", "*"); 
     res.header("Access-Control-Allow-Headers", "X-Requested-With"); 
     res.json(response.statusCode); 
    }) 
    .on('success', function(data, response) 
    { 
     console.log('success: ' + data); 
    }) 
    .on('fail', function(data, response) 
    { 
     console.log('fail: ' + data); 
    }) 
    .on('error', function(err, response) 
    { 
     console.log('error: ' + err); 
    }); 
    }); 
}); 

app.listen(3000); 

回答

1

只要你在獲取/ security/authorize請求時包含憑證,它應該可以工作。你收到一個有效的密鑰嗎?

我們最近還發布了一個Node.js工具包,用於與Rally的WSAPI一起工作。它爲您處理所有這些身份驗證,並且使查詢更容易的許多其他操作。

檢查出:https://github.com/rallytools/rally-node

+0

該鍵似乎是有效的。這是一個類似於:76d52bb4-678e-430e-a851-4ec063d800ae的關鍵。那麼,你是說我的代碼應該工作嗎?我還會看看你提到的工具包。我只是在這方面學習,但會話控制有問題嗎? – dfrobison

+0

該鍵看起來是有效的,似乎你在請求中正確地包含它。在拉力賽中也有一個錯誤,有時它不正確地說你的鑰匙是無效的 - 但是如果你的密碼從不起作用,那麼可能還有其他的事情發生。 –

+0

我剛使用了工具包,解決了我的問題。生病 – dfrobison