pir*_*win 3 php google-app-engine google-cloud-storage
我尝试使用的方法是使用 openssl
$fp = fopen($key, 'r'); //open the PEM file
$priv_key = fread($fp,8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key,"password");
openssl_sign($response["data_to_sign"], $signature, $pkeyid,'sha256');
$sign = base64_encode($signature)
Run Code Online (Sandbox Code Playgroud)
这是在 google 中为签名的 url 生成签名的正确方法吗?
Mou*_*iao 10
你可以试试 Google Cloud Storage PHP SDK,它是保持代码干净的好选择。
按照Packagist 上的此页面将包安装到您的项目 ,然后
function getSignedGcsUrl($objPath/* which is your target object path */, $duration = 50)
{
$storageClient = new StorageClient([
'projectId' => /* your gcp projectId here */,
'keyFilePath' => /* your gcp keyFilePath here */,
]);
$bucket = $storageClient->bucket($objPath);
$object = $bucket->object();
$url = $object->signedUrl(new \DateTime('+ ' . $duration . ' seconds'));
return $url;
}
Run Code Online (Sandbox Code Playgroud)
按照以下页面安装和配置 superbalist/laravel-google-cloud-storage: 在 Github 上,然后
public static function getSignedGcsUrl($objPath, $duration = 50)
{
return Storage::disk('gcs'/* following your filesystem configuration */)
->getAdapter()
->getBucket()
->object($objPath)
->signedUrl(new \DateTime('+ ' . $duration . ' seconds'));
}
Run Code Online (Sandbox Code Playgroud)