1

xmpp クライアントを実装しています (現在は gtalk のみを対象としています)。

OAuth 2.0 Authorizationで説明されているように、OAuth2 トークンを取得することから始めました。トークンを取得したら、gtalk サーバーに接続する方法についてのヘルプも探しています。exampleを読みましたが、GAE で SASL 認証がどのように実装されるかわかりません。

次は、実際のユーザーがチャットできるチャット クライアントのように機能させる方法です。チャットボットを作成できる例や、ユーザーがチャットできるようにするためにユーザー名とパスワードを入力する必要がある他のてきました。

しかし、私の考えは、GAE アプリに Google の認証を使用し、実際の gtalk ユーザーに対してアプリをチャット クライアントのように動作させることです。これを達成する方法について正しい方向を教えてください。

4

1 に答える 1

0

gtalk XMPP クライアントを実装する際に、あなたと同様の障害にぶつかったと思います。アクセス トークンの取得はすべてうまくいきますが、次の部分に行き着きます。

( https://developers.google.com/talk/jep_extensions/oauthから取得):

<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" 
    mechanism="X-OAUTH2"
    auth:service="oauth2"
    xmlns:auth="http://www.google.com/talk/protocol/auth">  
  base64("\0" + user_name + "\0" + oauth_token)
</auth>

user_name を求めています。これはあなたが遭遇している種類の問題ですか?個人的には、この時点で障害にぶつかりました。これは明らかに OAuth であるため、ユーザー名がプログラムに認識されていないためです。これに関するGoogleの推奨事項が何であるかはわかりません。情報を見つけることができませんでした。

とにかく、XMPP サーバーに対して正しく認証されると仮定すると、他の XMPP サーバーと同じように動作するはずです。

gtalk XMPP 実装について私が発見したいくつかのことは、あなたや他の人を助けるかもしれません:

  • 接続するサーバーは、talk.google.com または xmpp.google.com です。
  • 要素の「to」属性は<stream:stream>、サーバーアドレスではなく「gmail.com」である必要があるようです
  • サーバーが使用する証明書は、サーバー アドレスではなく「gmail.com」からのものとして検証する必要があります (TLS の開始時)。
  • このページが役立つ場合があります: https://developers.google.com/cloud-print/docs/rawxmpp (ステップ 2 までのすべて)

これを何にコーディングしているのかを知らなければ、質問に直接回答することは困難です。あなたが私のようで、ゼロから XMPP クライアントを実装しているのであれば、幸運を祈るしかありません (長い道のりになるでしょう)。ただし、負担を軽減するために XMPP フレームワークを使用している場合は、ほとんどのフレームワークに gtalk を処理するための機能が組み込まれているはずです...

于 2013-01-13T15:04:46.400 に答える