使用下面的代码,我能够成功创建新用户。但如果用户已经存在,则无法工作。那么,当user不存在于我的域时,我该如何运行这段代码呢?
我的代码是$dir = new Google_Service_Directory($client);
$user = new Google_Service_Directory_User();
$name = new Google_Service_Directory_UserName();
$firstname=$_POST['first_name'];
$familyname=$_POST['last_name'];
$primary_email= $firstname.'.'.$familyname.'@mydomainname.com';
$name->setGivenName($firstname);
$name->setFamilyName($familyname);
$user->setName($name);
$user->setHashFunction("SHA-1");
$user->setPrimaryEmail($primary_email);
$user->setPassword(hash("sha1","password"));
$result = $dir->users->insert($user);
echo "New user ".$result->primaryEmail." created successfully.";
Google没有直接提供解决方案,但是你可以做两件事:
- 尝试在所有google用户 中查找您的用户
- 尝试插入并捕获异常。
查找所有用户:
function userExists(Google_Service_Directory $dir, (string)$primary_email) : bool {
$remoteUsers = $dir->users->listUsers(['domain' => 'mydomain']);
foreach($remoteUsers as $remoteUser) {
if((string)$remoteUser->primaryEmail == $primary_email) {
return true;
}
}
return false;
}
捕捉:
try {
$result = $dir->users->insert($user);
} catch (Google_Service_Exception $e) {
$errors = $e->getErrors();
foreach($errors as $error) {
if($error['message'] == "Entity already exists.") {
echo "Entity already exists.";
}
}
}