在 C# 中使用 Sinch REST Api
Using Sinch REST Api in C#
我正在尝试在 C# 中使用 Sinch REST api 进行短信验证,但我在编码授权所需的字符串时遇到了问题。我正在为 Auth 使用 APPLICATION SIGNED REQUEST,我想知道使用什么 c# 函数来创建 content-Md5 和 stringtoSign。
对于内容 MD-5,这里是我的代码片段
var body = JsonConvert.SerializeObject(smsRequest);
var hs = System.Security.Cryptography.MD5.Create();
var db = hs.ComputeHash(Encoding.UTF8.GetBytes(body));
var stringToSign = Convert.ToBase64String(db);
public class SmsRequest
{
[JsonProperty("identity")]
public Identity Identity;
[JsonProperty("method")]
public string Method;
[JsonProperty("metadata")]
public Metadata Metadata;
}
public class Metadata
{
[JsonProperty("os")]
public string Os;
[JsonProperty("platform")]
public string Platform;
}
public class Identity
{
[JsonProperty("type")]
public string Type;
[JsonProperty("endpoint")]
public string Endpoint;
}
现在创建 stringtoSign 是我使用下面的代码
var stringToSign = "POST" + Environment.NewLine + "jANzQ+rgAHyf1MWQFSwvYw==" + Environment.NewLine +
"application/json" + Environment.NewLine + "x-timestamp:2014-06-04T13:41:58Z" +
Environment.NewLine + "/v1/sms/+46700000000";//used for signing
var secret = "JViE5vDor0Sw3WllZka15Q=="; // this needs to be signed
var encoding = new System.Text.UTF8Encoding();
byte[] keyByte = encoding.GetBytes(stringToSign);
var hmacsha256 = new HMACSHA256(keyByte);
byte[] messageBytes = Encoding.UTF8.GetBytes(secret);
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
var res = Convert.ToBase64String(hashmessage);
我在这里使用示例中的值 https://www.sinch.com/using-rest/,我希望结果是 "qDXMwzfaxCRS849c/2R0hg0nphgdHciTo7OdM6MsdnM=",而使用我的方法时我得到“2/8KqdiC2708EC84vTinPchiATRJiZU4Mgfpykb4F40=”。
我这里做错了什么?
我会使用我们很棒的 nuget https://github.com/sinch/nuget-serversdk 如果您不想安装 nuget,您可以检查源代码并选择您想要的部分。它的开源和你
我正在尝试在 C# 中使用 Sinch REST api 进行短信验证,但我在编码授权所需的字符串时遇到了问题。我正在为 Auth 使用 APPLICATION SIGNED REQUEST,我想知道使用什么 c# 函数来创建 content-Md5 和 stringtoSign。 对于内容 MD-5,这里是我的代码片段
var body = JsonConvert.SerializeObject(smsRequest);
var hs = System.Security.Cryptography.MD5.Create();
var db = hs.ComputeHash(Encoding.UTF8.GetBytes(body));
var stringToSign = Convert.ToBase64String(db);
public class SmsRequest
{
[JsonProperty("identity")]
public Identity Identity;
[JsonProperty("method")]
public string Method;
[JsonProperty("metadata")]
public Metadata Metadata;
}
public class Metadata
{
[JsonProperty("os")]
public string Os;
[JsonProperty("platform")]
public string Platform;
}
public class Identity
{
[JsonProperty("type")]
public string Type;
[JsonProperty("endpoint")]
public string Endpoint;
}
现在创建 stringtoSign 是我使用下面的代码
var stringToSign = "POST" + Environment.NewLine + "jANzQ+rgAHyf1MWQFSwvYw==" + Environment.NewLine +
"application/json" + Environment.NewLine + "x-timestamp:2014-06-04T13:41:58Z" +
Environment.NewLine + "/v1/sms/+46700000000";//used for signing
var secret = "JViE5vDor0Sw3WllZka15Q=="; // this needs to be signed
var encoding = new System.Text.UTF8Encoding();
byte[] keyByte = encoding.GetBytes(stringToSign);
var hmacsha256 = new HMACSHA256(keyByte);
byte[] messageBytes = Encoding.UTF8.GetBytes(secret);
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
var res = Convert.ToBase64String(hashmessage);
我在这里使用示例中的值 https://www.sinch.com/using-rest/,我希望结果是 "qDXMwzfaxCRS849c/2R0hg0nphgdHciTo7OdM6MsdnM=",而使用我的方法时我得到“2/8KqdiC2708EC84vTinPchiATRJiZU4Mgfpykb4F40=”。
我这里做错了什么?
我会使用我们很棒的 nuget https://github.com/sinch/nuget-serversdk 如果您不想安装 nuget,您可以检查源代码并选择您想要的部分。它的开源和你