2015-06-09 9 views
-1

Я боролся с REST API parse.com в течение часа без успеха. Я продолжаю получать HTTP 401 с ответом {"error": "unauthorized"}.Parse REST API 401 Несанкционированный JQuery Ajax

Вот мое облако код:

Parse.Cloud.define("sendEmail", function(request, response) { 

    var Mailgun = require('mailgun'); 
    Mailgun.initialize('mg.crawford.works', 'key-c67f7a53cf12b2aabeaade0e50d57e8f'); 

    Mailgun.sendEmail 
    ({ 
    "to": "[email protected]", 
    "from": "[email protected]", 
    "subject": "Website Form Submission", 
    "text": "Name: " + request.params.name + "\nEmail: "+request.params.email+"\nPhone: "+request.params.phone+"\nMessage: "+request.params.msg 
    }, 
    { 
    success: function(httpResponse) 
    { 
     console.log(httpResponse); 
     response.success("success"); 
    }, 
    error: function(httpResponse) 
    { 
     console.error(httpResponse); 
     response.error("error"); 
    } 
    }); 
}); 

Вот мой код клиента сторона (только для отправки формы):

var data = {}; 

data.name = $("#name").val(); 

data.email = $("#email").val(); 

data.msg = $("#message").val(); 

data.phone = $("#phone").val(); 
$.ajax({ 
    method: 'post', 
    url: "http://api.parse.com/1/functions/sendEmail", 
    data: JSON.stringify(data), 
    contentType: 'application/json', 
    headers: 
    { 
    'X-Parse-Application-Id': 'This is the right key, triple checked', 
    'X-Parse-REST-API-Key': 'Same story here' 
    } 
}) 
.done(function (response) { 
    if (response.success == 'success') {    
    alert('success');      
    } else { 
    alert('fail'); 
    } 
}); 
return false; // required to block normal submit since you used ajax 

Я смотрел много поддержки синтаксического анализа fourms как этот (StackOverflow не давая мне поставить больше ссылок б/с Я еще нуб): https://www.parse.com/questions/401-unauthorized-error-with-parse-rest-api

Цените любую помощь вы можете дать,

@acrawly

+0

Я скопировал свой Ajax вызова JQuery и заменить с моим приложением и отдых ключей API и все работает просто отлично. Попробуйте выполнить как можно более удобную функцию: 'Parse.Cloud.define (« hello », function (request, response) { response.success (« Hello world! »); });' –

+0

Использование Postman все работал отлично, поэтому я перешел от мысли, что виноват Парс. Я выложу свой рабочий код (который я не вижу разницы). Я вырезал и вставил свои ключи, поэтому я не уверен, почему это изменило бы ситуацию. –

ответ

0

При вызове функции облака вы должны HTTPS в URL не HTTP, но для извлечения файлов, используйте HTTP

0

Так этот код закончил работать, и я не могу понять, почему:

$.ajax("https://api.parse.com/1/functions/sendEmail", { 
       dataType: 'json', 
       method:'post', 
       contentType: "application/json", 
       data: JSON.stringify(data), 
       headers: { 'X-Parse-Application-Id': 'sameKey', 
         'X-Parse-REST-API-Key': 'sameKeyAgain' 
       }, 
       success: function(data) { //<-- I thought maybe success vs done was it but 
        //I changed this out and no diff in the result 

        if(data.result === 'success') 
        { 
         alert("success"); 
        } 
        else 
        { 
         alert("error"); 
        } 

       }, 
       error: function(data) { 
        alert(data); 
       } 
      }); 

EDIT: Как @hasen указал ниже, это было потому, что я не использовал HTTPS.

Смежные вопросы