2012-11-04 91 views
1

我正在實施一個xmpp客戶端(現在只適用於gtalk)。Gtalk OAuth令牌連接到Gtalk服務

我開始獲取OAuth 2.0 Authorization上描述的OAuth2令牌。一旦我有了令牌,我也正在尋找一些關於如何連接到gtalk服務器的幫助。我已閱讀the example,但不確定在GAE上將如何實施SASL認證。

接下來的事情,如何使它像聊天客戶端一樣工作,真正的用戶可以聊天。我看到examples使用我可以使聊天機器人,和其他examples這需要用戶輸入他們的用戶名和密碼才能聊天。

但我的想法是對我的GAE應用程序使用Google的身份驗證,然後讓我的應用程序像真正的gtalk用戶的聊天客戶端一樣工作。 請指點我如何實現這一目標的正確方向。

回答

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,所以程序不知道用戶名。我不確定谷歌對此的推薦是什麼,我一直沒能找到任何信息。

無論如何,假設您可以正確地向XMPP服務器進行身份驗證,它應該像任何其他XMPP服務器一樣工作。

有些事情,我發現有關的gtalk XMPP實現這可能會幫助你或其他人:

  • 服務器連接到可能是talk.google.com或xmpp.google.com
  • 的「to」屬性的<stream:stream>元素看起來需要是「gmail.com」而不是服務器地址
  • 服務器使用的證書需要驗證來自「gmail.com」而不是服務器地址(當啓動TLS)
  • T他的網頁可能會有所幫助:https://developers.google.com/cloud-print/docs/rawxmpp(都記錄下來步驟#2)

不知道你是什麼編碼這一點,很難給你的問題的直接回應。如果你像我一樣,從頭開始實施XMPP客戶端,我只能祝你好運(這將是一段漫長的旅程)。但是,如果您使用的是XMPP框架來減輕負擔,那麼大多數應該有內置的東西來處理gtalk ...

+0

請參閱http://stackoverflow.com/questions/14315877/xmpp-google-talk -x-oauth2-login-require-username/14360701解決用戶名問題。 – dexy

相關問題