Как создать собственный адрес электронной почты домена на gsuite для образования, используя скрипт PHP - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь автоматически создавать адреса электронной почты из своего сценария в Gsuite для образования.

Я попробовал все, что здесь есть https://developers.google.com/admin-sdk/directory/v1/reference/users/insert?authuser=4#try-it

Если я попробую его в Интернете по ссылке вышеэто создается.но когда я пытаюсь использовать свой собственный код, он не

<?php
$post_fields = json_encode(array(
    'name'       =>array('familyName'=>'Dan', 'givenName'=>'Foster'),
    'password'        => '1234567890',
    'primaryEmail'    => 'dan.foster@domain.com',
    'agreedToTerms'   => false,
    'isMailboxSetup'  => false
));

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://www.googleapis.com/admin/directory/v1/users?key=[ASCCESS_key]",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => $post_fields,
  CURLOPT_HTTPHEADER => array(
    "Accept: application/json",
    "Authorization: Bearer [AUTHENTICATION TOKEN]",
    "Content-Type: application/json",
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo $err;
} else {
  echo $response;
}
?>

. После выполнения я получаю следующую ошибку

{
    "error": {
        "errors": [
            {
                "domain": "global",
                "reason": "authError",
                "message": "Invalid Credentials",
                "locationType": "header",
                "location": "Authorization"
            }
        ],
        "code": 401,
        "message": "Invalid Credentials"
    }
}

Как я могу обойти вход в OAuth, поскольку моя учетная запись является администратороми этот код выполняется из бэкэнда.

*** Обновление

Я наконец-то начал работать;

putenv('GOOGLE_APPLICATION_CREDENTIALS='.dirname(__FILE__).'/google/credentials.json');
        $client = new Google_Client();
        $client->setSubject($this->adminEmail);
        $client->setScopes(Google_Service_Directory::ADMIN_DIRECTORY_USER);
        $client->setAccessType('offline');
        $client->useApplicationDefaultCredentials();

        return $client;
...