Php 谷歌api服务帐户出错

Php 谷歌api服务帐户出错,php,google-api,google-calendar-api,access-token,google-domain-api,Php,Google Api,Google Calendar Api,Access Token,Google Domain Api,我正在尝试使用服务帐户访问我的域的google api。这是我的教程 第一:我访问console.developers.google.com并创建新项目。我将日历API添加到我的项目中。之后,我创建凭证OAuth服务帐户。我使用此密钥并使用角色创建和访问\u令牌。我成功地获得了访问令牌 第二,我访问admin.google.com并管理API客户端访问。我用角色添加了我的客户ID 但当我使用此访问权限获取请求时 我总是收到消息 { "error": { "errors": [ {

我正在尝试使用服务帐户访问我的域的google api。这是我的教程

第一:我访问console.developers.google.com并创建新项目。我将日历API添加到我的项目中。之后,我创建凭证OAuth服务帐户。我使用此密钥并使用角色创建和访问\u令牌。我成功地获得了访问令牌

第二,我访问admin.google.com并管理API客户端访问。我用角色添加了我的客户ID

但当我使用此访问权限获取请求时

我总是收到消息

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "notFound",
    "message": "Not Found"
   }
  ],
  "code": 404,
  "message": "Not Found"
 }
}
似乎我的访问令牌无法访问我的域。这是我创建访问令牌的源代码

$private_key = openssl_pkey_get_private('file://key.pem', 'notasecret');

$header = array("alg" => "RS256", "typ" => "JWT");
$header = base64_encode(utf8_encode(json_encode($header)));
$exp = time() + (60 * 60); 


$jwt_cs = array(
   "iss" => "ClientEmail@MyApp",
   "scope" => "https://www.googleapis.com/auth/calendar",
   "aud" => "https://www.googleapis.com/oauth2/v3/token",
   "exp" => $exp,
   "iat" => time(),
   "access_type" => "offline"
);
$jwt_cs = base64_encode(utf8_encode(json_encode($jwt_cs)));

openssl_sign($header.'.'.$jwt_cs, $sign, $private_key, 'sha256WithRSAEncryption');

$sign = base64_encode($sign);

$jwt = $header.'.'.$jwt_cs.'.'.$sign;
$login_data = array(
    'grant_type' => 'urn:ietf:params:oauth:grant-type:jwt-bearer',
    'assertion' => $jwt
);
$url='https://www.googleapis.com/oauth2/v3/token';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($login_data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);

你能告诉我我的错吗

您需要授予服务帐户访问域的权限。我没有访问域帐户的权限,因此我无法帮助您测试此功能。但是,你应该能够采取服务帐户的电子邮件地址,并添加它,就像你将任何其他用户。这将授予它访问权限。如果您的日历id错误,也可能导致错误,请尝试{AccessToken}。是的,我说钥匙不能进入,令牌不要问。我想我是在里面做的。我将我的客户端ID添加到授权API客户端和一个或多个API作用域中,我的日历ID没有错误。我在这一页测试了它