Я видел несколько сообщений об этой проблеме, но я не смог преодолеть свои, используя предложения. Ниже приведен мой код и результаты:
<cffunction name="CreateUser" hint="Create new GSuite user." returntype="struct" access="public">
<cfargument name="token" hint="The Google-provided access token." type="string" required="yes">
<cfargument name="state" hint="The unique anti-forgery string." type="string" required="yes">
<cfargument name="userdata" hint="A json string containing user data" type="string" required="yes">
<cfargument name="api" hint="API Key for the Google Domain" type="string" required="yes">
<cfhttp method="post" charset="utf-8" url="https://www.googleapis.com/admin/directory/v1/users?state=#state#&access_token=#token#" result="uResult">
<cfhttpparam type="header" name="auth" value="Authorization: Bearer #token#">
<cfhttpparam type="header" name="accept" value="Accept: application/json">
<cfhttpparam type="header" name="content" value="Content-type: application/json">
<cfhttpparam type="body" name="body" value=#userdata#>
</cfhttp>
<cfreturn uResult>
</cffunction>
Используемая строка JSON:
{
"password":"Test@me12!",
"primaryEmail":"John@doe.com",
"name":
{
"familyName":"Doe",
"givenName":"John"
}
}
Я беру свою структуру HTTP POST из следующего примера:
Пользователи Google: вставка (API каталогов)
Результат, который я получаю от Google, таков:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "Invalid Given/Family Name: FamilyName"
}
],
"code": 400,
"message": "Invalid Given/Family Name: FamilyName"
}
}
Я не могу понять, что может быть не так. В другие посты я включил тип контента. Согласно примеру Google, я включил заголовок accept и заголовок auth. Тем не менее, я не могу получить другой результат.
Если я возьму строку JSON, передам ее функции и использую ее в приведенной выше ссылке Google, я могу создать пользователя. Однако, если я пропущу его через HTTP POST, я не смогу. Пожалуйста, скажите мне, что где-то там запятая или пропущенная точка.