web-dev-qa-db-ja.com

Parse Javascript APIをAppceleratorと統合し、文書化されていない呼び出しを使用しないようにするにはどうすればよいですか?

文書化されていない通話を使用せずに、Facebookの資格情報からユーザーを作成したいと思います。次の2つの既知の理由により、Parse JavascriptLibraryの現在の実装に基づいてそれが可能であるとは思いません。

1。ライブラリの現在の実装は、Appcelerator HTTPクライアントをサポートしていないため、すぐに失敗します。 Appcelerator HTTP clientを利用するように既存のParseJavascriptライブラリのajaxメソッドを拡張することで、この問題に対処しました。

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

私が作成したスライドデッキには約2Kのビューがあり、ブログ投稿にもほぼ同じビューがあるので、人々がこれを機能させたいと思っていることは明らかです。

2。ライブラリの現在の実装は、Facebook Javascriptライブラリと統合しており、そのライブラリがAppceleratorでも機能しないことを前提としています。実際、AppceleratorはFacebookをフレームワークに直接統合しているため、javascriptライブラリは必要ありません。ユーザーアカウントをFacebookにリンクするために必要なすべての情報は、Appcelerator開発者がすでに精通しているAPI呼び出しを使用して簡単に取得できます。

元の質問は解析サポートフォーラムから削除されたので、より広いコミュニティからの解決策を探しています。

こんにちはアーロン、

回避策としてParseライブラリで文書化されていないAPIの使用を促進することは他の開発者にとって役に立たないので、私はそれをリストから外すことに決めました。 Titaniumの特定のケースで役立つ可能性があることを理解しています。また、プライベートAPIを使用することの影響についてはよく知っていますが、他のユーザーはその警告を見落としている可能性があります。御理解いただけることを願います。

HéctorRamosソリューションアーキテクト、解析 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));
});

Appceleratorフォーラムに関する質問

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

解析フォーラムに関する質問

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

63
Aaron Saunders

新しい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ガイドには記載されていませんが、コードビザの非縮小バージョンに記載されています。

@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をサポートするために、元のコードにいくつかの更新を加えました。

この取り組みを主導してくれてありがとう。あなたの元の投稿は私に時間を節約しました。

2