2014-09-25 5 views
0

Я создаю веб-приложение, используя Parse.com как мой бэкэнд. У меня возникла проблема при попытке сохранить ответ от API профиля пользователя Facebook в базе данных Parse.Ошибка хранилища данных Parse.com с API Facebook

FB.api('/me', function(response) { 
     // Print Response to Console 
     console.log(response); 

     // Create New Parse Object 
     var Facebook = Parse.Object.extend("Facebook"); 
     var userFacebook = new Facebook(); 
     for(var element in response) { 
      userFacebook.set(element, response[element]); 
     } 

     // Store Data on Parse 
     userFacebook.save(null, { 
      success: function(user) { 
      console.log("User Facebook data saved."); 
     }, 
     error: function(user, error) { 
      console.log("Facebook data storage error: " + error.code + " (" + error.message + ")"); 
     } 
    }); 

печатает ответ API правильно на консоль, и я получаю два сообщения об ошибках, один за другим:

Failed to load resource: the server responded with a status of 404 (Not Found) https://api.parse.com/1/classes/Facebook/myID

и

Facebook data storage error: 101 (object not found for update)

В моей Разбор счета, База данных под названием «Facebook» - создано:. Однако он содержит только заголовок для каждого из элементов в объекте ответа (например, first_name, gender, email и т. Д.). У этого нет новой строки с этими значениями.

Я действительно застрял на этом - любая помощь будет оценена!

Обратите внимание, что объект ответа в виде:

{ 
     "email":"[email protected]", 
     "first_name":"myFirstName", 
     "gender":"myGender", 
     "id":"myID", 
     "last_name":"myLastName", 
     "link":"https://www.facebook.com/app_scoped_user_id/myID/", 
     "locale":"en_US", 
     "name":"myFullName", 
     "timezone":-7, 
     "updated_time":"2014-03-12T04:57:39+0000", 
     "verified":true 
    } 
+0

** Если вам нужна дополнительная информация, пожалуйста, не стесняйтесь спрашивать. Спасибо! ** – Jesse

ответ

0

В столбце «Идентификатор» на Parse.Object защищен и не может устанавливаться через API. В моем случае ответ API от Facebook включает в себя ключ «id», который сталкивается с ключом «id» Parse.Object.

Если вы столкнулись с одной и той же проблемой, вам просто нужно изменить имя столбца «id». Вы можете сделать это с помощью следующего кода:

for(var element in response) { 
     if(element=="id") { 
      userFacebook.set("userID", response[element]); 
     } else { 
      userFacebook.set(element, response[element]); 
     } 
    } 

Благодаря Hector Ramos на разбор помочь мне решить эту проблему! И спасибо Wayne за то, что помогли мне!

1

Объект в течение каждого цикла

for(var element in response) { 
     userFacebook.set(element, response[element]); 
    } 



    FB.api('/me', function(response) { 
     // Print Response to Console 
     console.log(response); 

     // Create New Parse Object 
     var Facebook = Parse.Object.extend("Facebook"); 
     var userFacebook = new Facebook(); 
     for(var element in response) { 
      userFacebook.set(element, response[element]); 
     } 

     // Store Data on Parse 
     userFacebook.save(null, { 
      success: function(user) { 
      console.log("User Facebook data saved."); 
     }, 
     error: function(user, error) { 
      console.log("Facebook data storage error: " + error.code + " (" + error.message + ")"); 
     } 
    }); 
+0

Первоначально я попытался использовать response [element] вместо response.element, но я получаю следующую ошибку: 'Не удалось загрузить ресурс: сервер ответил статусом 404 (не найдено) https: //api.parse.com/1/classes/Facebook/myID Ошибка хранения данных Facebook: 101 (объект не найден для обновления) ' – Jesse

+0

Этот подход, однако, создает правильные заголовки в базе данных анализа (например, first_name, пол, электронная почта и т. д.) с правильным типом данных (например, строка, число, логическое значение). Никаких новых строк не было создано. – Jesse

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