Назначение лицензий Google Workspace через API [Powershell]
Мне удалось пройти аутентификацию с помощью кода, и я даже могу получить информацию о пользовательских лицензиях, используя код, аналогичный приведенному ниже. Функция AddWorkspaceLicense ниже всегда возвращает ошибку:
"errors": [
{
"message": "Invalid JSON payload received. Unexpected token.\nUserID=xxxxxxxxxx\n^",
"domain": "global",
"reason": "parseError"
}
],
Замените xxxxxx на имя пользователя в адресе электронной почты. Я отправляю весь адрес электронной почты, и он анализирует только имя пользователя перед @ где-то для этой ошибки.
Вот две мои функции. Первый (AddWorkspaceLicense) не работает. Второй (GetGoogleAcessToken) работает нормально и использует тот же метод отправки данных Google JSON. Единственная разница между ними заключается в том, что второй передает более одного параметра, так что, возможно, мой синтаксис как-то неверен?
function AddWorkspaceLicense ($AuthToken, $UserID, $UserType){
switch ($UserType){
"Student"{
$SKUID = 1010310008
}
"Staff"{
$SKUID = 1010310009
}
}
$ProductID = 101031
$requestUri = "https://licensing.googleapis.com/apps/licensing/v1/product/$ProductID/sku/$SKUID/user"
$params = @{
UserID=$UserID;
}
$response = Invoke-RestMethod -Headers @{Authorization = "Bearer $AuthToken"} -Uri $requestUri -Method Post -Body $params -ContentType 'application/json'
#return $params
}
AddWorkspaceLicense -AuthToken $AuthToken -UserID "(users primary email address)" -UserType "Student"
function GetGoogleAcessToken {
$RFToken = "Refresh token here"
$refreshTokenParams = @{
client_id=$clientId;
client_secret=$clientSecret;
refresh_token=$RFToken;
grant_type="refresh_token";
}
$requestUri = “https://www.googleapis.com/oauth2/v4/token”
$tokens = Invoke-RestMethod -Uri $requestUri -Method POST -Body $refreshTokenParams
$ExpireDate = (Get-Date).AddMinutes(30)
$GoogleAccess = New-Object System.Object
$GoogleAccess | Add-Member -MemberType NoteProperty -Name ExpireDate -Value $ExpireDate
$GoogleAccess | Add-Member -MemberType NoteProperty -Name Token -Value $tokens.access_token
Return $GoogleAccess
}