Как вы интегрируете API-интерфейс Parse Javascript с Appcelerator и не используете недокументированные звонки?

Я хотел бы создать пользователя из своих учетных данных Facebook без использования недокументированных вызовов. Я не думаю, что это возможно на основе текущей реализации Parse Javascript Library по двум известным причинам:

1. Текущая реализация библиотеки не поддерживает HTTP-клиент Appcelerator, поэтому он немедленно сбой. Я рассмотрел эту проблему, расширив существующий метод ajax библиотеки Parse Javascript, чтобы использовать Appcelerator HTTP client.

http://www.clearlyinnovative.com/blog/post/34758524107/parse-appcelerator-titanium-the-easy-way

На слайд-панели, которую я создал, было примерно 2 тыс. просмотров, и примерно то же самое в блоге, поэтому мне очень ясно, что люди хотят, чтобы это работало.

2. Текущая реализация библиотеки предполагает, что вы интегрируетесь с библиотекой Javascript Facebook, и эта библиотека также не работает с Appcelerator. Фактически, Appcelerator интегрировал Facebook непосредственно в структуру, поэтому нет необходимости в библиотеке javascript. Вся информация, необходимая для привязки учетной записи пользователя к Facebook, может быть легко получена с помощью вызовов API, которые уже знакомы разработчикам Appcelerator.

Оригинальный вопрос был удален с форума поддержки Parse, поэтому я ищу решение из более широкого сообщества.

Привет Аарон,

Не рекомендуется другим разработчикам продвигать использование недокументированных API в библиотеке Parse в качестве обходного пути, поэтому я принимаю решение заблокировать его. Я понимаю, что это может помочь в вашем конкретном случае с Титан, и вы хорошо осведомлены о последствиях использования частных API, но другие пользователи могут игнорировать это предупреждение. Надеюсь, вы понять.

Héctor Ramos Solutions Architect, Parse https://parse.com/help

Это код, который был слишком опасен, чтобы быть видимым на форуме:

// setting auth data retrieved from Ti.Facebook login
authData = {
    "facebook" : {
        "id" : Ti.Facebook.uid,
         "access_token" : Ti.Facebook.accessToken,
         "expiration_date" : expDate, // "format: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
    }
};

// Either way I resolved the problem, calling _handleSaveResult(true) on the returned user object, 
// I just dont think it should have been as difficult as it was
// attempt to log the user in using the FB information
var user = new Parse.User();
user.save({
    "authData" : authData
}).then(function(_user) {
    // force the user to become current
    _user._handleSaveResult(true); //<-- this is the evil method I called
    if (!_user.existed()) {

        // add additional user information
        var userInfo = {
            "acct_email" : "[email protected]",
            "acct_fname" : "Bryce",
            "acct_lname" : "Saunders"
        };
        return _user.save(userInfo);
    }
}).then(function(_user) {

    alert('Hooray! Let them use the app now.');

}, function(error) {
    alert(' ERROR: ' + JSON.stringify(error, null, 2));
});

Вопрос о форуме-посреднике

http://developer.appcelerator.com/question/152146/facebook-appcelerator-and-parse-integration-need-help

Вопрос о форуме по парку

https://parse.com/info/how-do-you-integrate-the-parse-javascript-api-with-appcelerator-and-not-use-undocumented-calls

Ответ 1

Возможно, эта часть нового SDK, но вы не можете просто позвонить:

Parse.FacebookUtils.logIn({
  "facebook": {
    "id": "user Facebook id number as a string",
    "access_token": "an authorized Facebook access token for the user",
    "expiration_date": "token expiration date of the format: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
   },
   {
      success : function(_user) {},
      error : function(_user, error) {}
   }
};

Он не задокументирован в руководстве Javascript, но он документально подтвержден в незавершенной версии кода vis vie:

@param {String, Object} permissions The permissions required for Facebook
log in.  This is a comma-separated string of permissions.
Alternatively, supply a Facebook authData object as described in our
REST API docs if you want to handle getting facebook auth tokens
yourself.

Я сделал некоторые обновления для вашего исходного кода, чтобы поддерживать последний SDK, который я собираюсь опубликовать в Github.

Большое спасибо за то, что помог этим усилиям. Ваше оригинальное сообщение спасло меня.