2

次のプロトコルで実行される XMPP サーバーを実装する簡単な方法を探しています: https://developers.google.com/cloud-print/docs/rawxmpp

唯一の違いは、X-GOOGLE-TOKEN 認証メカニズムを使用する必要があることです: https://stackoverflow.com/a/6211324/227244

手順は簡単です。クライアントから送信されたデータからトークンを取得し、このトークンに基づいてユーザー データを要求し、それに応じて JID を設定し、結果の JID にランダムな文字を追加します。

その後、トークンが異なる可能性があるが同じユーザー アカウントを持つ他のクライアントが XMPP リソースに接続し、サブスクライブしているクライアントに対してプッシュ通知のブロードキャストが有効になります。

現在利用可能な実装からどの程度のサーバー コードを借用できますか? ロジックは非常に単純ですが、すべてのサーバー コードを自分で作成することは避けたいと思います。多くの XEP を実装する ejabberd および prosody xmpp サーバーがあることは知っています。カスタム処理メカニズムを追加しやすいのはどれですか? コア xmpp サーバーの他の安定した代替案を提案できますか?

4

1 に答える 1

1

Google が設計した方法X-OAUTH2は非常にシンプルで、実装も簡単です。PLAIN実際、仕組みと仕組みに違いはありませんX-OAUTH2。標準の実装を選択するだけで、余計な手間をかけずPLAINに GoogleX-OAUTH2認証メカニズムで機能させることができます。

私はJaxl PHP ライブラリの作成者で、最近ライブラリ内のサポートを発表X-OAUTH2しました。これをサポートするために私が書かなければならなかったコードの正確な行をここで見ることができます。関連する唯一のコードは次のとおりです。

switch($mechanism) {
    case 'PLAIN':
    case 'X-OAUTH2':
        $stanza->t(base64_encode("\x00".$user."\x00".$pass));
        break;

X-OAUTH2実装のため$passには、あなたの oauth トークンに他なりません。つまり、認証メカニズムからのパスワード フィールドは、PLAINメカニズムの oauth トークンになりますX-OAUTH2。残りはすべて同じままです。

于 2012-09-22T03:48:09.123 に答える