XMPP Google Talk X-OAUTH2登录需要用户名

XMPP Google Talk X-OAUTH2登录需要用户名,xmpp,oauth-2.0,google-talk,Xmpp,Oauth 2.0,Google Talk,我正在为GoogleTalk实现一个XMPP客户端,该客户端使用相对较新的X-OAUTH2机制。我的想法是,我不需要存储用户名或密码来验证服务。但是,对于X-OAUTH2身份验证状态,这是最初的请求: <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="X-OAUTH2" auth:service="oauth2" xmlns:auth="http://www.google.com/talk/proto

我正在为GoogleTalk实现一个XMPP客户端,该客户端使用相对较新的X-OAUTH2机制。我的想法是,我不需要存储用户名或密码来验证服务。但是,对于X-OAUTH2身份验证状态,这是最初的
请求:

<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>

base64(“\0”+用户名+“\0”+oauth\u令牌)
请注意,它要求“user_name”与令牌一起发送。这里有我遗漏的东西吗?或者我真的必须让我的应用程序提示输入用户名吗?(注意,用户可能已经通过OAuth2登录以接收访问令牌)


我不知道还有任何其他使用OAuth的服务需要客户端提供用户名。例如,这个应用程序可以通过XMPP和OAuth2连接到Facebook聊天,而不需要在XMPP中提供用户名。

您不需要在应用程序中提示输入用户名。只需将“SCOPE”参数指定为“https://www.googleapis.com/auth/userinfo.email". 参考这将为您的用户提供电子邮件ID以及令牌作为响应


这有关于谷歌账户认证和授权的详细解释。用户名和电子邮件id在getUserInfo()函数中返回,您可以在应用程序中使用。

这起作用了,不幸的是,在授权应用程序时,它会向用户显示“查看您的电子邮件地址”标志,但至少我可以获得电子邮件地址。注意,它需要一个额外的HTTP请求才能访问googleapis.com/oauth2/v1/userinfo?access_token=。。。但我想我可以接受。谢谢我正在使用strophe.js为Google Talk实现XMPP。我已经在使用GoogleOAuth登录我的应用程序。您能告诉我,如何使用X-OAUTH2机制使用strophe发出请求吗。