Ошибка авторизации пользователя 422 "Неожиданная подпись"
Я пытался запустить авторизацию пользователя из моего приложения на C# по https://api.quickblox.com/auth.json. Я получил в ответ код ошибки **422 Неожиданная подпись. Кто-нибудь знает, что это значит или как отладить ошибку?
Я отправил следующую строку в качестве параметра:
{ "application_id": "MYAPPID",
"auth_key": "MYAUTHKEY",
"timestamp": "1394632995",
"nonce": "487",
"signature": "6bf130657ee04e68ff41a08ace44480f90b49f11",
"user": {
"login": "mylogin",
"password": "mypassword"
}
}
1 ответ
Это означает, что ваша подпись неверна;
Дополнительная информация о создании подписи находится здесь http://quickblox.com/developers/Authentication_and_Authorization
Некоторые примеры для C# вы можете найти здесь https://github.com/QuickBlox/SimpleSample-BackgroundMode-WindowsPhone7/blob/master/QuickBloxSDK-Silverlight/QuickBlox.cs
StringBuilder signature = new StringBuilder();
signature.Append("application_id");
signature.Append("=");
signature.Append(this.ApplicationId.ToString());
signature.Append("&");
signature.Append("auth_key");
signature.Append("=");
signature.Append(this.AuthenticationKey);
signature.Append("&");
signature.Append("nonce");
signature.Append("=");
signature.Append(randomResult);
signature.Append("&");
signature.Append("timestamp");
signature.Append("=");
signature.Append(ts.ToString());
byte[] key = Encoding.UTF8.GetBytes(this.AuthenticationSecret);
this.Encode(signature.ToString(),key)
private string Encode(string input, byte[] key)
{
HMACSHA1 myhmacsha1 = new HMACSHA1(key);
byte[] byteArray = Encoding.UTF8.GetBytes(input);
MemoryStream stream = new MemoryStream(byteArray);
return myhmacsha1.ComputeHash(stream).Aggregate("", (s, e) => s + String.Format("{0:x2}", e), s => s);
}