php获取google cloud的auth access token值示例代码

代码语言:php

所属分类:其他

代码描述:php获取google cloud的auth access token值示例代码,不需要安装gcloud的命令行客户端了,主要你的网络要能访问到google。

代码标签: php google cloud auth access token 示例 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<?php

// 配置变量
$PROJECT_ID = '';
$CLIENT_EMAIL = '';
$PRIVATE_KEY = "";//key字符串不要前后的-----BEGIN PRIVATE KEY-----\n


function createErrorResponse($status, $errorType, $message) {
    $errorObject = ['type' => 'error',
        'error' => ['type' => $errorType,
            'message' => $message]];
    http_response_code($status);
    header('Content-Type: application/json');
    header('Access-Control-Allow-Origin: *');
    echo json_encode($errorObject);
}

function createSignedJWT($email, $pkey) {
    //  $pkey = preg_replace('/-----BEGIN PRIVATE KEY-----|-----END PRIVATE KEY-----|\r|\n|\\n/', '', $pkey);
    // 解码 Base64 编码的私钥
    $decodedPkey = base64_decode($pkey);

    if ($decodedPkey === false) {
        throw new Exception("Failed to decode Base64 private key");
    }


    // 确保私钥包含正确的 PEM 格式起始和结束行
    $pemFormattedKey = "-----BEGIN PRIVATE KEY-----\n" . chunk_split(base64_encode($decodedPkey), 64, "\n") . "-----END PRIVATE KEY-----\n";

    // 加载私钥
    $privateKey = openssl_pkey_get_private($pemFormattedKey);


    if ($privateKey === false) {
        $error = openssl_error_string();
        throw new Exception("Failed to load private key: " . $error);

    }
    $authUrl = "https://www.googleapis.com/oauth2/v4/token";
    $issued = time();
    $expires = $issued + 600;

    $header = [
        'alg' => 'RS256',
        'typ' => 'JWT'
    ];

    $payload = [
        'iss' => $email,
        'aud' => $authUrl,
        'iat' => $issued,
        'exp' => $expires,
        'scope' => 'https://www.googleapis.com/auth/cloud-platform'
    ];

    $encodedHeader = urlSafeBase64Encode(json_encode($header));
    $encodedPayload = urlSafeBase64Encode(json_encode($payload));

    $unsignedToken = "$encodedHe.........完整代码请登录后点击上方下载按钮下载查看

网友评论0