我一直在尝试一些组合,但似乎无法想出一些有用的东西。有关我所询问的API的更多信息,请访问https://developers.google.com/admin-sdk/directory/v1/reference/users/insert。我有一种感觉,我只是没有正确设置请求。已知下面的代码可以工作。我用它来设置能够查询所有用户的客户端。
client = Google::APIClient.new(:application_name => "myapp", :version => "v0.0.0")
client.authorization = Signet::OAuth2::Client.new(
:token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
:audience => 'https://accounts.google.com/o/oauth2/token',
:scope => "https://www.googleapis.com/auth/admin.directory.user",
:issuer => issuer,
:signing_key => key,
:person => user + "@" + domain)
client.authorization.fetch_access_token!
api = client.discovered_api("admin", "directory_v1")
当我尝试使用以下代码时
parameters = Hash.new
parameters["password"] = "ThisIsAPassword"
parameters["primaryEmail"] = "tstacct2@" + domain
parameters["name"] = {"givenName" => "Test", "familyName" => "Account2"}
parameters[:api_method] = api.users.insert
response = client.execute(parameters)
我总是得到同样的错误“代码”:400,“消息”:“无效的给定/姓氏:姓氏”
我在研究这个特定的API时发现了一些事情。如果我打印出列表和插入函数的参数,例如
puts "--- Users List ---"
puts api.users.list.parameters
puts "--- Users Insert ---"
puts api.users.insert.parameters
只有List实际显示参数
--- Users List ---
customer
domain
maxResults
orderBy
pageToken
query
showDeleted
sortOrder
--- Users Insert ---
这让我想知道ruby客户端是否无法检索api因此无法正确提交请求或者我是否只是做了一些完全错误的事情。
我很欣赏任何有助于让我走上正确道路的想法或方向。
谢谢,
詹姆斯
答案 0 :(得分:7)
您需要在请求正文中提供Users resource,这也是您在params中看不到它的原因。 因此请求应如下所示:
# code dealing with client and auth
api = client.discovered_api("admin", "directory_v1")
new_user = api.users.insert.request_schema.new({
'password' => 'aPassword',
'primaryEmail' => 'testAccount@myDomain.mygbiz.com',
'name' => {
'familyName' => 'John',
'givenName' => 'Doe'
}
})
result = client.execute(
:api_method => api.users.insert,
:body_object => new_user
)