63

我想从他/她的 Facebook 凭据创建一个用户,而不使用无证电话。我认为基于 Parse Javascript 库的当前实现是不可能的,原因有两个:

1.库的当前实现不支持 Appcelerator HTTP 客户端所以它立即失败。我通过扩展现有 Parse Javascript 库的 ajax 方法以利用Appcelerator HTTP client.

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

我创建的幻灯片上大约有 2K 视图,在博客文章中也有大约 2K 视图,所以我很清楚人们希望它能够工作。

2.该库的当前实现假定您正在与 Facebook Javascript 库集成,并且该库也不能与 Appcelerator 一起使用。事实上,Appcelerator 已经将 Facebook 直接集成到框架中,因此不需要 javascript 库。使用 Appcelerator 开发人员已经熟悉的 API 调用,可以轻松获取将用户帐户链接到 Facebook 所需的所有信息。

原始问题已从 Parse 支持论坛中删除,因此我正在寻找更广泛社区的解决方案。

嗨亚伦,

推广使用 Parse 库中未记录的 API 作为解决方法对其他开发人员没有帮助,因此我决定将其取消列出。我知道它可能对您使用 Titanium 的特定情况有所帮助,并且您很清楚使用私有 API 的含义,但其他用户可能会忽略该警告。我希望你明白。

Héctor Ramos 解决方案架构师,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" : "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));
});

Appcelerator论坛上的问题

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

Parse 论坛的问题

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

4

1 回答 1

2

也许这部分是较新的 SDK,但您不能直接调用:

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

它没有记录在 Javascript 指南中,但记录在代码 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.

我对您的原始代码进行了一些更新,以支持我将在 Github 上发布的最新 SDK。

非常感谢您带头开展这项工作。你原来的帖子为我节省了几个小时。

于 2013-09-07T16:33:23.620 回答