Appcelerator ACS.用户登录 API 收到错误代码 400,并显示消息:'Invalid request sent.'



我正在尝试在Appcelerator ACS的自定义对象上存储一些数据。所以会有一个服务来做到这一点。每次需要身份验证才能创建新对象时

但是在使用ACS登录时,我有时会遇到以下错误。但它并不总是发生。只有当我多次呼叫服务时。

我得到的错误是:

{ 成功:假, 错误:真, 代码: 400, 消息:"发送的请求无效。 }

用于登录的代码:

ACS.Users.login(userData, function(data){
    if(data.success) {
        console.log("----------Successful to login.---------------");
        console.log(data);
        res.send(data);
        res.end();
    } else {
        console.log("------------------login failed---------------");
        console.log(data);
        res.send(data);
        res.end();
    }
},req, res);

有人可以帮助我了解如何从节点重用会话 ID。ACS 网络服务应用程序(不是网络应用程序)?

如何在将某些内容推送到自定义对象之前保持会话/检查会话有效性?有没有人遇到过类似的问题?

谢谢彼得

由于您正在将 req 和 res 参数传递到 ACS。Users.login,会话保存在_session_id cookie中:

http://docs.appcelerator.com/cloud/latest/#!/guide/node_acs

对 ACS 进行后续调用时,传入 req 和 res 参数,它将检查此会话令牌。

会话在超时或注销后可能会变得无效。 若要检查会话是否仍然良好,一种方法是检查此 REST API 终结点 (GET):

https://api.cloud.appcelerator.com/v1/users/show/me.json?key=(您的 ACS 密钥)&_session_id=(用户的会话 ID)

此外,由于某种原因,acs-node v0.9.3 似乎返回相同的会话 ID,即使对于不同的用户也是如此。 我看到的一些副作用包括(1)错误的用户试图对对象进行更改,以及(2)一个用户创建的对象实际上归最后一个登录的人所有。 确保 acs 节点位于 v0.9.2 可避免此问题。

现在node-acs已经关闭,每个人都有义务迁移到新的arrowdb节点sdk。

要解决上述关于不对用户进行身份验证的问题,在每次 ArrowDB 调用之前,请确保像这样传递用户的session_id:

// Connect Node.ACS to existing ACS
var ArrowDB = require('arrowdb'),
    arrowDBApp = new ArrowDB('XXYYZZZ', { // ArrowDB Key
        apiEntryPoint: 'https://api.cloud.appcelerator.com',
        autoSessionManagement: false, // handle session_id yourself
        prettyJson: true,
        responseJsonDepth: 3
    }); 
// == Creates the ACS_Event for a logged in User on ArrowDB ==
function createACSEvent(uniqueId, params) {
    arrowDBApp.sessionCookieString = params.session_id; //<-- THIS IS IT!
    arrowDBApp.eventsCreate({
        name: 'someEvent',
        start_time: params.start_time,
        custom_fields: params,
    }, function(err, result) {
        if (err) {
            logger.info( 'ERROR ACS_Event created '+ err);
        } else {
            logger.info( 'Success Creating ACSEvent ' + JSON.stringify(result));
        }
    });
}

最新更新