63 votes

Comment intégrer l'API Parse Javascript avec Appcelerator et ne pas utiliser des appels non documentés ?

Je voudrais créer un utilisateur à partir de ses informations d'identification Facebook sans utiliser d'appels non documentés. Je ne pense pas que cela soit possible sur la base de l'implémentation actuelle de la bibliothèque Javascript Parse pour deux raisons connues :

1. L'implémentation actuelle de la bibliothèque ne prend pas en charge le client HTTP Appcelerator et échoue donc immédiatement. J'ai résolu ce problème en étendant la méthode ajax de la bibliothèque Parse Javascript existante pour utiliser le client HTTP Appcelerator. Appcelerator HTTP client .

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

Le diaporama que j'ai créé a été consulté à environ 2 000 reprises et l'article de blog à peu près autant, il est donc clair pour moi que les gens veulent que cela fonctionne.

2. La mise en œuvre actuelle de la bibliothèque suppose que vous intégrez la bibliothèque Javascript de Facebook et cette bibliothèque ne fonctionne pas non plus avec Appcelerator. En fait, Appcelerator a intégré Facebook directement dans le cadre de travail, de sorte qu'il n'y a pas besoin de la bibliothèque javascript. Toutes les informations requises pour lier un compte utilisateur à Facebook peuvent être facilement obtenues en utilisant les appels API que les développeurs d'Appcelerator connaissent déjà.

La question originale a été supprimée du forum d'assistance Parse. Je cherche donc une solution auprès d'une communauté plus large.

Salut Aaron,

Il n'est pas utile pour les autres développeurs de promouvoir l'utilisation d'API non documentées dans la bibliothèque Parse comme solution de rechange. non documentées de la bibliothèque Parse comme solution de contournement, je prends donc la décision de de le retirer de la liste. Je comprends que cela puisse être utile dans votre cas particulier avec Titanium, et vous êtes bien conscient des implications de l'utilisation des mais d'autres utilisateurs pourraient négliger cet avertissement. J'espère que vous comprendre.

Héctor Ramos Architecte de solutions, Parse https://parse.com/help

C'est le code qui était trop dangereux pour être laissé visible sur le forum :

// 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" : "bryce@xxxxxx.com",
            "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));
});

Question sur le Forum Appcelerator

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

Question sur le forum Parse

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

2voto

Peut-être que cela fait partie d'un nouveau SDK, mais ne pouvez-vous pas simplement appeler :

Parse.FacebookUtils.logIn({
  "facebook": {
    "id": "user's 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) {}
   }
};

Ce n'est pas documenté dans le guide Javascript, mais c'est documenté dans la version non minifiée du code visa 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.

J'ai fait quelques mises à jour de votre code original pour supporter le dernier SDK que je vais publier sur Github.

Merci beaucoup d'être à l'origine de cet effort. Votre message original m'a fait gagner des heures.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X