gpt4 book ai didi

php - 无法使用 Google API 将提供的 key 参数强制转换为私钥

转载 作者:可可西里 更新时间:2023-11-01 12:38:47 25 4
gpt4 key购买 nike

我正在尝试测试我发现的这个例子 here这样我就可以在客户端直接上传,而无需用户使用 Google Cloud Storage 登录。

所有表达的常量都有正确的值,路径正确,没有空内容。

我得到的错误:

openssl_sign(): supplied key param cannot be coerced into a private key

我实现的功能是:

public static function storageURL( $id, $method = 'GET', $duration = 10 ) {
$key = file_get_contents(self::KEY_FILE);
$pkey = openssl_get_privatekey($key, 'notasecret');
$expires = time( ) + $duration;
$content_type = ($method == 'PUT') ? 'application/x-www-form-urlencoded' : '';
$to_sign = ($method . "\n" .
/* Content-MD5 */ "\n" .
$content_type . "\n" .
$expires . "\n" .
'/'.self::BUCKET_NAME.'/' . $id);
$signature = '*Signature will go here*';
if (!openssl_sign( $to_sign, $signature, $pkey, 'sha256' ))
{
error_log( 'openssl_sign failed!' );
$signature = '<failed>';
} else {
$signature = urlencode( base64_encode( $signature ) );
}
return ('https://'.self::BUCKET_NAME.'.commondatastorage.googleapis.com/' .
$id .
'?GoogleAccessId=' . self::SERVICE_ACCOUNT_NAME .
'&Expires=' . $expires . '&Signature=' . $signature);
}

最佳答案

首先,您需要使用openssl_pkcs12_read 来读取 key 文件,而不是file_get_contents。其次,我相信您希望省略 openssl_get_privatekey 的第二个参数。

我强烈建议您使用 google-api-php-client为此,它有 Google_P12Signer.php

关于php - 无法使用 Google API 将提供的 key 参数强制转换为私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21149200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com