您如何将 Parse Javascript API 与 Appcelerator 集成,而不使用未记录的调用?

Posted

技术标签:

【中文标题】您如何将 Parse Javascript API 与 Appcelerator 集成,而不使用未记录的调用?【英文标题】:How do you integrate the Parse Javascript API with Appcelerator and not use undocumented calls? 【发布时间】:2013-05-05 02:35:38 【问题描述】:

我想从他/她的 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 的浏览量,在博客文章中也有大约 2000 次浏览量,所以我很清楚人们希望它能够正常工作。

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

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

嗨亚伦,

推广使用无证对其他开发者没有帮助 Parse 库中的 API 作为一种解决方法,所以我决定 取消列出它。我知道这可能对您的特定情况有所帮助 钛,你很清楚使用私有的含义 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

【问题讨论】:

您有什么问题?您似乎已经回答或解决了所有问题。 它是受支持的,并且可以通过更新 parse.js 库随时更改 给他们的高管发邮件了吗?似乎在他们更改正式公开的 API 并为其提供一种工作方式之前,您会陷入没有“答案”的困境。 他们在一个多月前进行了调查,但仍然阻止了我在他们的论坛上的回复,我还没有得到官方的答复。我只是不使用 Parse,并且在他们表现出对 Appcelerator 的喜爱之前不推荐它。 我已经放弃希望并鼓励人们使用 appcelerator 云服务、stackmob 或 kinvey 【参考方案1】:

也许这部分是较新的 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。

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

【讨论】:

以上是关于您如何将 Parse Javascript API 与 Appcelerator 集成,而不使用未记录的调用?的主要内容,如果未能解决你的问题,请参考以下文章

Parse.com 从客户端批量保存 (saveAll) 超时

如何在不获取空对象的情况下进行 JSON.stringify 和 JSON.parse?

如何将Parse通道与我们的API同步以正确提供推送通知

如何将javascript文件注入来自api的html字符串?

Javascript Parse Facebook 登录问题

Javascript Parse Facebook 登录问题