【问题标题】:Trigger.io Ajax Requests - with Parse Facebook User authenticationTrigger.io Ajax 请求 - 使用 Parse Facebook 用户身份验证
【发布时间】:2012-11-20 11:05:14
【问题描述】:

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

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

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

{ 类型:'EXPECTED_FAILURE',内容:'{"code":107,"error":"这个 端点只支持 Content-Type: application/json 请求,不支持 应用程序/x-www-form-urlencoded."}',状态代码:'400',消息: '从服务器收到的 HTTP 错误代码: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 对象发送。如果有人有任何想法,他们将不胜感激。谢谢。乔什。

【问题讨论】:

  • 您能否尝试在传递给 forge.request.ajax 的选项对象中设置 contentType 属性。而不是直接在标题中设置“Content-Type”?
  • 酷 - 谢谢阿米尔 - 这确实有帮助。虽然我现在得到以下信息: { type: 'EXPECTED_FAILURE', [INFO] content: '{"code":107,"error":"invalid json: authData%5Bfacebook%5D%5Bid%5D=199714297&authData%5Bfacebook%5D %5Baccess_token%5D = BAAE5X1h2zPQBAALpl90JLv5hu8phZA0LwQi8xeNAPdZA9HVNL1kNeNceWuuXYTZBHoAx3AVmgTpRFwu9uFRsUK7ER4bwZCmw0EeZBlTLbrVUneyKp8CRASp3Gux2h5ZCSceUD5rUikmAZDZD&的authData%5Bfacebook%5D%5Bexpiration_date%5D = 2013-01-18T23%3A45%3A33.601Z“} '[INFO]的StatusCode: '400',[INFO]消息:' 从接收到的HTTP错误代码server: 400' } 不是 100% 确定原因,但我会继续玩。

标签: ajax rest trigger.io parse-platform


【解决方案1】:

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

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

forge.request.ajax({
    ...
    contentType: 'application/json',
    data: JSON.stringify({
        "authData": {
            "facebook": {
                "id" : facebookId,
                "access_token": accessToken,
                "expiration_date": expirationDate
              }
        }
    })
});

【讨论】:

    猜你喜欢
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    相关资源
    最近更新 更多