0

同じサーバーに php/apache サービスと流星があります。accounts-ui パッケージを使用しています。ログイントークン(セッションID?)を指定して、ユーザーがログインしていることをphpスクリプトで知る方法はありますか?

これが私の最初のニーズです。ログインしているユーザーのプロフィール写真をアップロードします。とてもシンプルですよね?しかし、何時間もグーグルで検索しても答えが見つかりませんでした。

  • 最初の解決策は、html5 ファイル API を使用してデータを流星サーバーに送信し、サーバーが画像を保存することです。しかし、このソリューションは IE9 でも機能しません。

  • 2番目の解決策は、私が試みていることです.htmlフォームを使用して、写真をphpスクリプトにアップロードします(または、必要に応じてnodejsスクリプトにすることができます)。このスクリプトは、従来の php スクリプトと同様に画像を保存します。問題は、アップロード要求が承認されているかどうかわからないことです。承認されていない場合、誰もが誰のプロフィール写真も変更できます。画像を保存する前に、アップロード リクエストにいくつかの情報を追加し、php コードで確認する必要があります。PHP スクリプトから meteor サーバーにリクエストを送信することを考えていますが、送信するパラメーターと meteor がどのように応答するかを知る必要があります。

どうすれば2番目の解決策を達成できますか、または誰かが私の起源の問題に対する別の解決策を持っている場合、それは素晴らしいでしょう.

ありがとうございました。

4

1 に答える 1

1

Meteor は、DDP と呼ばれるプロトコルを使用して、クライアントとサーバー間の通信を行います。しかし、現時点では PHP ddp クライアントがないため、Meteor サーバーと PHP サーバーの間で REST タイプの通信方法を使用する必要があります。

Meteor クライアント用の PHP クライアントを構築できると思われる場合は、PHP スクリプトから Meteor.call を実行してコレクションにサブスクライブさせるなどの操作を実行できるため、非常に役立ちます。完全な DDP 仕様 (pre1) は、https ://github.com/meteor/meteor/blob/master/packages/livedata/DDP.md にあります。

REST メソッドを実行するには、Meteor Routerを使用してサーバー側のルートを作成できるようにする必要があります。[atmosphere.meteor.com] でコミュニティ パッケージのリストにアクセスするのに役立つmeteoriteを介してインストールされます。1

サーバー側js

Meteor.Router.add('/checklogin', 'post', function() {
    var userId = this.params.userId;
    var loginToken = this.params.loginToken;

    if(userId && loginToken) {
        return (!!Meteor.findOne({_id:userId,"services.resume.loginTokens.token":loginToken}));
    }
});

次に、PHP で POST リクエストを実行して、2 つのパラメーターを指定します/checklogin。1 つは userId であり、userId です (Meteor.userId()またはで見つかります。もう 1 つは、Meteor クライアントでlocalStorage.getItem("Meteor.userId")見つけたログイン トークンです。localStorage.getItem("Meteor.loginToken")

于 2013-05-18T15:26:37.183 に答える