我正在创建一个新的 PHP 应用程序,我想在其中与 Keybase 进行交互。第一个选择是使用 API,但不幸的是我遇到了一些问题。
第一步是拨打注册电话。我设法创建了一个 curl 请求,但我不确定 pwh 应该是什么样子。我试过了:
$fp = @fopen('/dev/urandom','rb');
if ($fp !== FALSE) {
$prBits .= @fread($fp,16);
@fclose($fp);
}
$salt = bin2hex($prBits);
$pwh = implode(unpack("H*",password_hash('MyP@ssword'.$prBits, PASSWORD_BCRYPT)));
但是拨打电话会导致:
{
"status": {
"code": 100,
"desc": "need a PDPKA5 key",
"name": "INPUT_ERROR"
},
"csrf_token": "lgHZIDA4ZjYyNzgy.....86aMrL09"
}
完整的调用:
$data = [
"name" => "My Name",
"email" => "mymail@example.com",
"username" => "SomeUnusedUsername1234",
"pwh" => $pwh,
"pwh_version" => 3,
"salt" => $salt,
"invitation_id" => "000000001"
);
$dataString = json_encode($data);
$ch = curl_init('https://keybase.io/_/api/1.0/signup.json');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
有人有工作示例或解决方案吗?