Google Admin SDK未经授权的客户端PHP 1次完美工作



在Google Admin SDK上需要帮助。我是Google Admin SDK的新手。因此,我被授权时遇到显示错误:

{error:" unuthorized_client"," error_description":"客户端是 未经授权使用此方法检索访问令牌"}

这是我的代码。

<?php 
include_once '../vendor/autoload.php';
include_once "base.php";
session_start();
echo pageHeader("Service Account Access");

/************************************************
  Make an API request authenticated with a service
  account.
 ************************************************/
$client = new Google_Client();
$client->setAuthConfig('service_account.json');
$client->setApplicationName("automate user");
$client->setSubject('admin@******.org');
$client->setScopes(['https://www.googleapis.com/auth/admin.directory.user']);
$client->setIncludeGrantedScopes(true);
$client->setAccessType('offline');
//$auth_url = $client->createAuthUrl();
//header('Location: '.filter_var($auth_url, FILTER_SANITIZE_URL));
if(isset($_SESSION['access_token']) && $_SESSION['access_token'])
{
    $client->setAccessToken($_SESSION['access_token']);
    if ($credentials_file = checkServiceAccountCredentialsFile()) {
  // set the location manually
  $client->setAuthConfig('client_secret1.json');
} elseif (getenv('GOOGLE_APPLICATION_CREDENTIALS=service_account.json')) {
  // use the application default credentials
  $client->useApplicationDefaultCredentials();
} else {
  echo missingServiceAccountDetailsWarning();
  return;
}
$dir = new Google_Service_Directory($client);
$user = new Google_Service_Directory_User();
$name = new Google_Service_Directory_UserName();

//$results = $dir->users->get('********@****.com');
$name->setGivenName('*****');
$name->setFamilyName('*****');
$user->setName($name);
$user->setHashFunction('SHA-1');
$user->setPrimaryEmail('****@***');
$user->setpassword(hash('sha1','******'));
$user->setchangePasswordAtNextLogin(false);

$results = $dir->users->insert($user);
if($results) {
     echo "New user : ".$results->primaryEmail."";
} else{
     echo " User doesn't exist : ".$email;
}
} 
else {
if ($client->isAccessTokenExpired()) {
    $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
    //file_put_contents($credentialsPath, json_encode($client->getAccessToken()));
  }
    $redirect_uri = 'http://'.$_SERVER['HTTP_HOST']. '/google/oauth.php';
    header('Location: '.filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

<?php pageFooter(__FILE__); ?>

第一次它可以完美地工作。几天后,我运行了此代码,它显示了unauthorized_client的错误。我不知道为什么会显示此错误。我已经创建了域范围内的委托服务帐户。请帮助并告诉我我在做错了什么

您可以尝试此GitHub论坛:

API使用自己的凭据(服务器到服务器流)

访问

步骤1-创建OAuth2凭据

遵循您正在使用的产品生成服务的步骤 带有JSON密钥文件的帐户,然后回到此页面。

步骤2-设置客户端库

在您的adsapi_php.ini文件的[oauth2]部分下,插入 通往JSON密钥文件的路径并设置ADS API的范围 访问。插入您想要的用户的电子邮件帐户 模仿AS,如果有的话。

最新更新