api身份验证(c#到php)
我需要帮助 我正在尝试通过API连接网站,但它请求身份验证。 他们通过C.向我展示了一个例子,但我想换成PHP 我使用api身份验证(c#到php),c#,php,api,authentication,C#,Php,Api,Authentication,我需要帮助 我正在尝试通过API连接网站,但它请求身份验证。 他们通过C.向我展示了一个例子,但我想换成PHP 我使用file\u get\u contents获取数据。 如何在请求的HTML标题中使用他们的姓名发送他们。 我是如何签名的 有网站的解释。 总之,你能把C#转换成PHP吗(请:) API身份验证: string message = yourAPIKey + unixTimeStamp; using (HMACSHA256 hmac = new HMACSHA256(Convert
file\u get\u content
s获取数据。
如何在请求的HTML标题中使用他们的姓名发送他们。
我是如何签名的
有网站的解释。
总之,你能把C#转换成PHP吗(请:)
API身份验证:
string message = yourAPIKey + unixTimeStamp;
using (HMACSHA256 hmac = new HMACSHA256(Convert.FromBase64String( yourPrivateKey ))){
byte[] signatureBytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
string X-Signature = Convert.ToBase64String(signatureBytes));
}
client.DefaultRequestHeaders.Add("X-PCK", yourAPIKey);
client.DefaultRequestHeaders.Add("X-Stamp", stamp.ToString());
client.DefaultRequestHeaders.Add("X-Signature", signature);
与用户帐户相关的所有API调用都需要身份验证
您需要提供3参数来验证请求:
"X-PCK": API key
"X-Stamp": Nonce
"X-Signature": Signature
API key
您可以从exchange帐户中的帐户>API访问页创建API密钥
Nonce:
string message = yourAPIKey + unixTimeStamp;
using (HMACSHA256 hmac = new HMACSHA256(Convert.FromBase64String( yourPrivateKey ))){
byte[] signatureBytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
string X-Signature = Convert.ToBase64String(signatureBytes));
}
client.DefaultRequestHeaders.Add("X-PCK", yourAPIKey);
client.DefaultRequestHeaders.Add("X-Stamp", stamp.ToString());
client.DefaultRequestHeaders.Add("X-Signature", signature);
Nonce是一个正则整数。它一定会随着你的每一个要求而增加
通常的做法是对该参数使用unix时间
签名:
string message = yourAPIKey + unixTimeStamp;
using (HMACSHA256 hmac = new HMACSHA256(Convert.FromBase64String( yourPrivateKey ))){
byte[] signatureBytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
string X-Signature = Convert.ToBase64String(signatureBytes));
}
client.DefaultRequestHeaders.Add("X-PCK", yourAPIKey);
client.DefaultRequestHeaders.Add("X-Stamp", stamp.ToString());
client.DefaultRequestHeaders.Add("X-Signature", signature);
签名是一个HMAC-SHA256
编码的消息。必须使用包含时间戳和API密钥的私钥生成HMAC-SHA256
代码
示例(C):
string message = yourAPIKey + unixTimeStamp;
using (HMACSHA256 hmac = new HMACSHA256(Convert.FromBase64String( yourPrivateKey ))){
byte[] signatureBytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
string X-Signature = Convert.ToBase64String(signatureBytes));
}
client.DefaultRequestHeaders.Add("X-PCK", yourAPIKey);
client.DefaultRequestHeaders.Add("X-Stamp", stamp.ToString());
client.DefaultRequestHeaders.Add("X-Signature", signature);
在创建参数之后,您必须在请求的HTML标题中用它们的名称发送它们
示例(C):
string message = yourAPIKey + unixTimeStamp;
using (HMACSHA256 hmac = new HMACSHA256(Convert.FromBase64String( yourPrivateKey ))){
byte[] signatureBytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
string X-Signature = Convert.ToBase64String(signatureBytes));
}
client.DefaultRequestHeaders.Add("X-PCK", yourAPIKey);
client.DefaultRequestHeaders.Add("X-Stamp", stamp.ToString());
client.DefaultRequestHeaders.Add("X-Signature", signature);
我认为你必须使用而不是文件内容
例如:
// API Url
$url = 'http://';
// Put the value of parameters
$yourAPIKey = "";
$stamp = "";
$signature = "";
$ch = curl_init($url);
curl_setopt_array($ch, array(
CURLOPT_HTTPHEADER => array('X-PCK: '. $yourAPIKey, 'X-Stamp: '. $stamp, 'X-Signature: '. $signature),
CURLOPT_RETURNTRANSFER =>true,
CURLOPT_VERBOSE => 1
));
$response = curl_exec($ch);
curl_close($ch);
// echo response output
echo $response;
使用卷曲。举一个这样的例子: 对于标题,请使用类似的内容
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'"X-PCK": API key',
'"X-Stamp": Nonce',
'"X-Signature": Signature'
));
到目前为止你有什么php?我刚刚开始。我是新手,但是我如何使用curl,你能给我一个例子吗?我如何通过PHP手册和Google创建signatureSearch:对于C语言中的HMACSHA256,你需要。对于Convert.FromBase64,字符串为。等于ComputeHash(encoding.GetBytes(message));在php中:。Convert.TOBASE64字符串为