2012-11-20 55 views
0

我試圖從Trigger.io,理想地通過Facebook驗證用戶。Trigger.io Ajax請求 - 解析Facebook用戶身份驗證

我通過Facebook(使用Parse Facebook模塊)對用戶進行身份驗證,並將他們的訪問令牌,訪問終止日期和facebook ID傳遞給我對Parse的調用。

這是事情出錯了。每當我試圖通過Ajax這個數據發佈到解析REST API,我得到一個錯誤在我的鍛造/觸發控制檯閱讀:

{類型:「EXPECTED_FAILURE」,內容:「{‘代碼’:107, 「error」:「此 端點僅支持Content-Type:application/json請求,而不是 application/x-www-form-urlencoded。」}',statusCode:'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對象/在正確的格式。如果有人有任何想法,他們將非常感激。謝謝。喬希。

+0

你能嘗試使用設置的選項將contentType屬性對象傳遞給forge.request.ajax。而不是直接在頭文件中設置「Content-Type」? –

+0

酷 - 謝謝阿米爾 - 這確實有幫助。 雖然我現在得到以下: {類型: 'EXPECTED_FAILURE', [INFO]內容:「{ 「代碼」:107, 「錯誤」:「無效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錯誤代碼:400'} 不是100%確定爲什麼,但我會繼續玩。 –

回答

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