Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
silverlight身份验证中的XMPP实现返回失败_Silverlight_Xmpp - Fatal编程技术网

silverlight身份验证中的XMPP实现返回失败

silverlight身份验证中的XMPP实现返回失败,silverlight,xmpp,Silverlight,Xmpp,我正在尝试在silverlight中实现Xmpp协议,并尝试连接到Facebook,在从服务器获得之前,这里我将确保一切正常。 我正在使用X Facebook平台身份验证。 我使用以下代码完成了此操作: byte[] ch = Convert.FromBase64String(message.challenge); string challenge = System.Text.Encoding.UTF8.GetString(ch, 0, ch.Length); string response =

我正在尝试在silverlight中实现Xmpp协议,并尝试连接到Facebook,在从服务器获得之前,这里我将确保一切正常。 我正在使用X Facebook平台身份验证。 我使用以下代码完成了此操作:

byte[] ch = Convert.FromBase64String(message.challenge);
string challenge = System.Text.Encoding.UTF8.GetString(ch, 0, ch.Length);
string response = "";
long callId = DateTime.UtcNow.Ticks;
MD5 md = new MD5();

String signature1 = "api_key=203366556348506"
+ "call_id=" + callId
+ "method=auth.xmpp_login"
+ param[2]
+ "session_key=" + messageClient.SessionKey
+ "v=1.0"
+ messageClient.AppSecret;
md.Value = signature1;

response = "method=auth.xmpp_login&api_key=203366556348506&session_key=bc6d6e00462cc2bb73a824bd.4-100001565408667&call_id=" + callId + "&sig=c47d741cb8f18c4e78b990f48e2f63aa&v=1.0&" + param[2];


message.Request = "<response xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" + Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(response)) + "</response>";
this.messageClient.SendMessageAsync(message);
String signature1 = "api_key=" + messageClient.ApiKey
    + "call_id=" + callId
    + "method=auth.xmpp_login"
    + param[2]
    + "session_key=" + messageClient.SessionKey
    + "v=1.0"
    + messageClient.AppSecret;

md.Value = signature1;

response = "method=auth.xmpp_login&api_key=" + messageClient.ApiKey + "&session_key=" + messageClient.SessionKey + "&call_id=" + callId + "&sig=" + md.FingerPrint.ToLower() + "&v=1.0&" + param[2];
byte[]ch=Convert.FromBase64String(message.challenge);
字符串质询=System.Text.Encoding.UTF8.GetString(ch,0,ch.Length);
字符串响应=”;
long callId=DateTime.UtcNow.Ticks;
MD5 md=新的MD5();
字符串签名1=“api_key=203366556348506”
+“call_id=“+callId
+“方法=auth.xmpp\u登录”
+参数[2]
+“session_key=“+messageClient.SessionKey”
+“v=1.0”
+messageClient.AppSecret;
md.值=签名1;
response=“method=auth.xmpp\u login&api\u key=203366556348506&session\u key=bc6d6e00462c2bb73a824bd.4-100001565408667&call\u id=“+callId+”&sig=c47d741cb8f18c4e78b990f48e2f63aa&v=1.0&+param[2];
message.Request=“”+Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(response))+“”;
this.messageClient.SendMessageAsync(消息);
但我从服务器收到以下消息:

<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>

请告诉我哪里出了问题。

请尝试以下代码:

byte[] ch = Convert.FromBase64String(message.challenge);
string challenge = System.Text.Encoding.UTF8.GetString(ch, 0, ch.Length);
string response = "";
long callId = DateTime.UtcNow.Ticks;
MD5 md = new MD5();

String signature1 = "api_key=203366556348506"
+ "call_id=" + callId
+ "method=auth.xmpp_login"
+ param[2]
+ "session_key=" + messageClient.SessionKey
+ "v=1.0"
+ messageClient.AppSecret;
md.Value = signature1;

response = "method=auth.xmpp_login&api_key=203366556348506&session_key=bc6d6e00462cc2bb73a824bd.4-100001565408667&call_id=" + callId + "&sig=c47d741cb8f18c4e78b990f48e2f63aa&v=1.0&" + param[2];


message.Request = "<response xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" + Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(response)) + "</response>";
this.messageClient.SendMessageAsync(message);
String signature1 = "api_key=" + messageClient.ApiKey
    + "call_id=" + callId
    + "method=auth.xmpp_login"
    + param[2]
    + "session_key=" + messageClient.SessionKey
    + "v=1.0"
    + messageClient.AppSecret;

md.Value = signature1;

response = "method=auth.xmpp_login&api_key=" + messageClient.ApiKey + "&session_key=" + messageClient.SessionKey + "&call_id=" + callId + "&sig=" + md.FingerPrint.ToLower() + "&v=1.0&" + param[2];
我已将响应字符串更改为上面的字符串


这给我带来了成功。希望这能对您有所帮助。

欢迎使用SO,请花几分钟时间阅读常见问题解答和降价文档(编辑问题时,右侧空白处提供了一个有用的组合)。