0

我正在尝试对来自 Trigger.io 的用户进行身份验证,最好是通过 Facebook。

我通过 Facebook(使用 Parse Facebook 模块)对用户进行身份验证,并将他们的访问令牌、访问到期日期和 facebook Id 传递给我对 Parse 的调用。

就是这里出了问题。每当我尝试通过 Ajax 将此数据发布到 Parse REST API 时,我的 forge/Trigger 控制台读取错误:

{ type: 'EXPECTED_FAILURE', content: '{"code":107,"error":"此端点只支持 Content-Type: application/json 请求,不支持 application/x-www-form-urlencoded."}', statusCode: '400', message: 'HTTP error code received from server: 400' }

我用来尝试发布这些数据的代码是......

function auth(facebookId,accessToken,expirationDate) {
    forge.logging.log('auth started');
    forge.request.ajax({
        url: 'https://api.parse.com/1/users',
        headers: {
            'X-Parse-Application-Id': config.parseAppId,
            'X-Parse-REST-API-Key': config.parseRestKey,
            'Content-Type': 'application/json'
        },
        type: 'POST',
        dataType: 'json',
        data: {
            "authData": {
                "facebook": {
                    "id" : facebookId,
                    "access_token": accessToken,
                    "expiration_date": expirationDate
                  }
            }
        },
        success: function (data) {
            forge.logging.log('auth finished 1');
            forge.logging.log(data);
        },
        error: function(error){
            forge.logging.log('auth finished 2');
            forge.logging.log(error);
        }
    })//success
} //auth

我不知道如何以正确的格式将其作为 JSON 对象发送。如果有人有任何想法,他们将不胜感激。谢谢。乔希。

4

1 回答 1

3

每当data传递给的选项forge.requests.ajax是您的示例中的对象时,实际发布的是表示该对象的查询字符串。该contentType选项仅允许您设置Content-Type标头,它不会影响对象为请求编码的方式。

但是,如果data选项只是一个字符串,那么这个字符串将用作请求的主体。您可以生成一个 JSON 字符串以用作正文,JSON.parse如下所示:

forge.request.ajax({
    ...
    contentType: 'application/json',
    data: JSON.stringify({
        "authData": {
            "facebook": {
                "id" : facebookId,
                "access_token": accessToken,
                "expiration_date": expirationDate
              }
        }
    })
});
于 2012-11-21T16:04:43.980 回答