Google g suite Неправильно указано / Фамилия: FamilyName (ColdFusion / HTTP POST) - PullRequest
0 голосов
/ 12 марта 2019

Я видел несколько сообщений об этой проблеме, но я не смог преодолеть свои, используя предложения. Ниже приведен мой код и результаты:

<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, я не смогу. Пожалуйста, скажите мне, что где-то там запятая или пропущенная точка.

1 Ответ

1 голос
/ 12 марта 2019

Ваш заголовок "name" и "values" выглядит не так.Не помещайте заголовок names в атрибут "value".Вот для чего используется атрибут «name» :-)

Например, заголовки авторизации и расположения должны быть:

 <cfhttpparam type="header" name="Content-Type" value="application/json"> 
 <cfhttpparam type="header" name="Authorization" value="Bearer #token#">

Кроме того, параметр «body» не имеет атрибута «name», только "значение":

<cfhttpparam type="body" value="#userdata#"> 

Для получения дополнительной информации см. также документацию cfhttpparam .

...