连接到谷歌云消息云连接服务器的身份验证错误

Posted

技术标签:

【中文标题】连接到谷歌云消息云连接服务器的身份验证错误【英文标题】:Auth Error connecting to google cloud messaging cloud connection servers 【发布时间】:2016-05-07 09:07:02 【问题描述】:

我是 gcm 上游消息传递的新手。我正在尝试通过 xmpp 连接到云连接服务器(使用 c# agsxmpp 库)。但是,我从服务器收到一条未经授权的错误消息,并且即使相同的项目编号/api 密钥适用于 http 下游推送通知,连接也会立即关闭。任何帮助表示赞赏。

这里是代码。

        var username = Configuration.PROJECT_NUMBER + "@" + Configuration.GCM_SERVER;
        xmpp = new XmppClientConnection
        
            UseSSL = true,
            UseStartTLS = false,
            Server = Configuration.GCM_SERVER,
            ConnectServer = Configuration.GCM_SERVER,
            Port = Configuration.GCM_PORT,
            Username = username,
            Password = Configuration.GCM_API_KEY,
            AutoResolveConnectServer = true,
            SocketConnectionType = SocketConnectionType.Direct,
            AutoAgents = false,
            KeepAlive = true,
            AutoRoster = false,
            AutoPresence = false,
            UseCompression = false,
            Show = ShowType.chat
        ;

        xmpp.OnReadSocketData += Xmpp_OnReadSocketData;
        xmpp.OnWriteSocketData += Xmpp_OnWriteSocketData;
        xmpp.OnLogin += Xmpp_OnLogin;
        xmpp.OnMessage += Xmpp_OnMessage;
        xmpp.OnError += Xmpp_OnError;
        xmpp.OnClose += Xmpp_OnClose;
        xmpp.OnAuthError += Xmpp_OnAuthError;

        xmpp.Open();

    

这里是与 ccs 的交互(从 OnReadSocketData 和 OnWriteSocketData 事件中捕获)

To CCS<<11:59:58 834
<stream:stream to='gcm.googleapis.com' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' xml:lang='en'>

From CSS>> 11:59:59 037
<stream:stream from="gcm.googleapis.com" id="AF8BBDE576QWEFF3543" version="1.0" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client">                                                                                                                                                                                                                                                                                                                                                                                         


From CSS>> 11:59:59 101
<stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>X-OAUTH2</mechanism><mechanism>X-GOOGLE-TOKEN</mechanism><mechanism>PLAIN</mechanism></mechanisms></stream:features>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   


To CCS<<11:59:59 115
<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="PLAIN">ADIwNjAxOTEwOTA2Mlw0MGjkdf4y67fvbjjdgESnhaa2tFX3hIcm56NXhWZndJclpFUmlMbnBqNVFIdkk=</auth>


From CSS>> 11:59:59 312
<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>ism>X-OAUTH2</mechanism><mechanism>X-GOOGLE-TOKEN</mechanism><mechanism>PLAIN</mechanism></mechanisms></stream:features> 


From CSS>> 11:59:59 314
</stream:stream>urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>ism>X-OAUTH2</mechanism><mechanism>X-GOOGLE-TOKEN</mechanism><mechanism>PLAIN</mechanism></mechanisms></stream:features>                

【问题讨论】:

你说你刚刚使用 GCM 上游消息传递,我是否正确地假设你正在实施的只是为了尝试它?您正在使用gcm-preprod.googleapis.com:5236 端口,诸如此类?只是想验证Configuration.PROJECT_NUMBER = &lt;your_sender_id&gt;?干杯。 找到这个similar post。几乎没有区别:实现语言,根据我之前的评论,他使用的是gcm-preprod.googleapis.com。我继续询问他是否能够找到导致错误的原因。我不知道它是否有用。让我们来看看。干杯! 感谢您的帮助,我使用 @ 作为用户名,我将其更改为仅用户名,现在可以使用了。 太棒了。 :D您应该将其发布为答案并将其标记为正确。以便社区和未来可能的用户可以看到它。 :) 有一天可能会帮助某人。干杯! :D 是的,很好。 【参考方案1】:

我将用户名从 &lt;Project_Number&gt;@&lt;GCM_Server_Address&gt; 更改为 &lt;Project_Number&gt; 并且它正在工作。

【讨论】:

以上是关于连接到谷歌云消息云连接服务器的身份验证错误的主要内容,如果未能解决你的问题,请参考以下文章

谷歌云实例无法通过腻子连接 - 获取“不支持的身份验证方法可用(服务器发送:公钥)”

windows 2008 R2 出现身份验证错误。 无法连接到本地安全机构

尝试使用繁琐的连接和 Windows 身份验证连接到 SQL 服务器?

Dialogflow 自定义身份验证

远程连接Windows云服务器报错:出现身份验证错误,要求的函数不受支持

身份验证不适用于使用 NodeJS 进行的谷歌云 API 身份验证