Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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
api身份验证(c#到php)_C#_Php_Api_Authentication - Fatal编程技术网

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

我需要帮助

我正在尝试通过API连接网站,但它请求身份验证。 他们通过C.向我展示了一个例子,但我想换成PHP

我使用
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字符串为