C#学习教程:使用Jabber.net(C#/Mono)和SASL连接到FacebookChatMono)连接到Facebook聊天。我使用的代码是这样的:staticManualResetEventdone=newManualResetEvent(false);constboolVERBOSE=true;conststringTARGET="friends_username@chat.facebook.com";voidStart(){JabberClientj=newJabberClient();j.User="my_facebook_alias";//稍后将被删除j.Server="chat.facebook.com";j.Port=5222;j.NetworkHost="chat.facebook.com";j.AutoStartCompression=true;j.KeepAlive=30F;j.AutoStartTLS=false;j.AutoStartCompression=true;j.PlaintextAuth=true;j.Password="my_facebook_password";//稍后将被删除j.RequiresSASL=true;j.LocalCertificate=null;//请不要做额外的事情。j.AutoPresence=false;j.AutoRoster=true;j.AutoReconnect=-1;j.OnInvalidCertificate+=newSystem.Net.Security.RemoteCertificateValidationCallback(j_OnInvalidCertificate);//监听错误。永远这样做!j.OnError+=newbedrock.ExceptionHandler(j_OnError);//登录完成后做什么j.OnAuthenticate+=newbedrock.ObjectHandler(j_OnAuthenticate);//监听XMPP有线协议if(VERBOSE){j.OnReadText+=newbedrock.TextHandler(j_OnReadText);j.OnWriteText+=newbedrock.TextHandler(j_OnWriteText);}//启动一切j.Connect();//等到消息发送完成done.WaitOne();//干净地注销j.Close();}staticvoidj_OnWriteText(objectsender,stringtxt){if(txt=="")return;//忽略保持活动空间Console.WriteLine("SEND:"+txt);}staticvoidj_OnReadText(objectsender,stringtxt){if(txt=="")return;//忽略保持活动空间Console.WriteLine("RECV:"+txt);}staticvoidj_OnAuthenticate(objectsender){Debug.Log("OnAuth...");//发件人始终是JabberClient。JabberClientj=(JabberClient)发送者;j.Message(TARGET,"我的测试消息!!!");//发送完毕。关闭。done.Set();}staticvoidj_OnError(objectsender,Exceptionex){//出现错误!Console.WriteLine("错误:"+ex.ToStr荷兰国际集团());Debug.Log("错误:"+ex.ToString());//关闭.done.Set();}boolj_OnInvalidCertificate(objectsender,System.Security.Cryptography.X509Certificates.X509Certificate证书,System.Security.Cryptography.X509Certificates.X509Chain链,System.Net.Security.SslPolicyErrorssslPolicyErrors){Debug.Log("无效证书"+sslPolicyErrorsToString()+":"+certificate.ToString(true));返回真;我得到j_OnAuthenticate,它使用我的ID/密码很好,因为将密码更改为其他内容会产生错误。但我确实想使用X-FACEBOOK-PLATFORMSASL机制登录而不保存用户名/密码。完整的日志是:RECV:RECV:X-FACEBOOK-PLATFORMDIGEST-MD5SEND:RECV:cmVhbG09ImNoYXQuZmFjZWJvb2suY29tIixub25jZT0iMDBENjAwQ0UyNjZBNzgyMEE5MUIzRDhGNjZDODQ1QjMiLHFvcD0iYXV0aCIsY2hhcnNldD11dGYtOCxhbGdvcml0aG09bWQ1LXNlc3M=SEND:dXNlcm5hbWU9ImpvbmFzMiIscmVhbG09ImNoYXQuZmFjZWJvb2suY29tIixub25jZT0iMDBENjAwQ0UyNjZBNzgyMEE5MUIzRDhGNjZDODQ1QjMiLGNub25jZT0iMzUzMzMyM2E2YTZmNmU2MTczMzIzYTUxNGU1ZjQxNjI0YzM4NjYiLG5jPTAwMDAwMDAxLHFvcD1hdXRoLGRpZ2VzdC11cmk9InhtcHAvY2hhdC5mYWNlYm9vay5jb20iLHJlc3BvbnNlPTcxN2ExNjM0MzdjOWU5MDM2NDcwYjViNTBhOTYxODIxLGNoYXJzZXQ9dXRmLTg=RECV:cnNwYXV0aD1hM2ZlZGM1NGRmYzNmMGEzMTU5Y2EyZDVmMmVkMmE2Zg==SEND:RECV:SEND:RECV:RECV:SEND:Jabber.NetRECV:jonas2@chat.facebook.com/Jabber.Net_c938c6a2_4C7D6EF9DCFDCSEND:RECV:OnAuth...SEND:我的测试消息!!!SEND:offlineSEND:SEND:在MatriXXMPP中有一个OnBeforeSasl委托,自定义方法可以在其中设置所需的FacebookSasl属性(例如facebookappid、appsecret和accesstoken)。但是Jabber.net中没有这样的代表!Jabber.net不支持SASL吗?或者你是怎么设置的?jabber-net中有SASL支持,但不支持X-FACEBOOK-PLATFORMSASL机制。如果你想使用这个机制,你必须通过添加这个SASL机制来扩展jabber-net。Facebook正在关闭XMPP连接。它可能与您在Authenticate事件中发送的消息有关。尝试在jabber-net发送您的初始状态后或在您获得列表后发送消息。上面Alex是C#学习教程:使用Jabber.net(C#/Mono)和SASL连接到Facebook聊天并分享所有内容。如果对大家有用,需要了解更多的C#学习教程,希望大家多多多多关注—本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
