Google g套件无效的给定/姓氏:FamilyName(ColdFusion / HTTP POST)

问题描述 投票:0回答:1

我已经看过几个关于这个问题的帖子,但是我无法使用这些建议来克服我的问题。以下是我的代码和结果:

<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":"[email protected]",
  "name":
    {
     "familyName":"Doe",
     "givenName":"John"
    }
}

我从以下示例中获取HTTP POST结构:Google Users: insert (Directory API)

我从谷歌回来的结果是这样的:

{
  "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传递它,我不能。请告诉我那里有一个迷路的逗号或丢失的点。

coldfusion http-post gsuite
1个回答
1
投票

您的标题“名称”和“值”看起来很像。不要将标题名称放在“value”属性中。这就是“名称”属性的用途:-)

例如,授权和处置标题应为:

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

此外,“body”参数没有“name”属性,只有“value”:

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

有关更多详细信息,请参阅cfhttpparam documentation

© www.soinside.com 2019 - 2024. All rights reserved.