我正在为使用相对较新的 X-OAUTH2 机制的 Google Talk 实现 XMPP 客户端。我的想法是,我不需要存储用户名或密码来对服务进行身份验证。但是,Google 的X-OAUTH2 身份验证文档指出这是最初的<auth>
请求:
<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”与令牌一起发送。我在这里缺少什么吗?还是我真的必须让我的应用程序提示输入用户名?(请注意,用户已经通过 OAuth2 登录以接收访问令牌)
我不知道任何其他使用 OAuth 的服务需要客户端提供用户名。例如,同一个应用程序可以通过 XMPP 和 OAuth2 连接到 Facebook Chat,而无需在 XMPP 中提供用户名。