使用服务帐户的Gmail API收到委派被拒绝的错误消息

时间:2019-04-17 06:04:14

标签: google-api gmail-api service-accounts gsuite google-php-sdk

我正在使用Google API开发基于Web的应用程序。我正在使用服务器到服务器,这显然是带有服务帐户的。我快完成了。

我现在可以通过Google api插入新用户。我什至可以通过Google API创建和/或授予新创建的用户对Team Drive的访问权限。意思是,我有一个可以模拟所有域用户的服务帐户。

问题: 但是,为什么在尝试通过Gmail API模仿用户时出现错误?我需要向新创建的用户添加Gmail标签和过滤器,但是却收到一条错误消息,指出“拒绝授权”。我想念什么吗?

很明显,我在G Suite中已经具有有效的服务帐户设置和适当的范围。我猜userID“ me”不是一个选项,因为我的应用程序需要模拟一个新创建的G Suite用户。如果我错了,请纠正我。

$service = new \Google_Service_Gmail($this->client($scopes));

$serviceLabel = new \Google_Service_Gmail_Label();
$serviceLabel->setLabelListVisibility('labelShow');
$serviceLabel->setMessageListVisibility('show');
$serviceLabel->setName($label_name);

try {
    $resp = $service->users_labels->create($email, $serviceLabel);    
} catch (Google_Service_Exception $e) {
   return false;
}

这是我遇到的错误

{#398 ▼
  +"statusCode": 403
  +"errors": array:1 [▼
    0 => array:3 [▼
      "domain" => "global"
      "reason" => "forbidden"
      "message" => "Delegation denied for service-account-user@domain.com"
    ]
  ]
  +"message": """
    {
     "error": {
      "errors": [
       {
        "domain": "global",
        "reason": "forbidden",
        "message": "Delegation denied for service-account-user@domain.com"
       }
      ],
      "code": 403,
      "message": "Delegation denied for service-account-user@domain.com"
     }
    }
    """
}

预计将为通过该应用程序创建的每个用户自动添加Gmail标签。

0 个答案:

没有答案