我已经对此进行了几天的交流,希望有人能为我提供一些启示。基本功能-用PHP开发仪表板,以显示业务的各种统计数据,所有这些统计数据都是从不同(非本地)位置提取的。一切顺利,直到我想获取Google审核信息为止……可以访问Google中的企业帐户,并已获得Google My Business API的批准。
由于这是一个独立的仪表板,被众多员工使用,所以我不能指望执行团队的成员必须在流程的任何时候输入凭据。剩下的唯一选择是服务帐户。
在代码当前状态下,它仅产生“ '客户端错误:POST https://www.googleapis.com/oauth2/v4/token
导致401 Unauthorized
响应:客户端未经授权使用此方法检索访问令牌” 。下面精简了代码以供参考;
$scopes = [
'https://www.googleapis.com/auth/plus.business.manage'
];
$client = new Google_Client();
$client->setApplicationName('name');
$client->setSubject('email_here');
$client->setAccessType('offline');
$client->setAuthConfig('service_account.json');
$client->setScopes($scopes);
if (isset( $_SESSION['service_token'])) {
$client->setAccessToken( $_SESSION['service_token'] );
}
if ($client->isAccessTokenExpired()) {
$client->refreshTokenWithAssertion();
}
$_SESSION['service_token'] = $client->getAccessToken();
我希望我可以通过赋予服务帐户所有者角色的方式来解决此问题,但无济于事。从到目前为止的内容来看,如果没有G-Suite,就无法通过服务帐户使用Google My Business API,这是否正确?(如果不是,那么到底是什么?虽然可以完美地获取数据,但是使用Oauth2客户端ID是不可能的,因为这需要用户干预。无法完成G-Suite设置,MX记录已经与Office365绑定在一起,因此更改将是灾难性的。