问题描述
我的Google管理控制台中有一个用户,电子邮件为dog@jopfre.com.我可以成功进行身份验证,并使用api添加和删除用户.现在,我正在尝试使用api更新用户.这是我的代码的简化版本:
I have a user in my google admin console with the email dog@jopfre.com.I can auth successfully and add and delete users using the api.Now I am trying to update the user using the api.Here is a simplified version of my code:
const admin = google.admin({version: 'directory_v1', auth});
admin.users.update({
userKey: "dog@jopfre.com",
requestBody: {
primaryEmail: "cat@jopfre.com"
}
},(err, data) => {
console.log(err || data);
});
这将返回请求的json和200状态.
This returns json of the request and a 200 status.
The nearest example I can find in the docs is this:
admin.members.insert({
groupKey: 'my_group@example.com',
requestBody: { email: 'me@example.com' },
auth: jwt
}, (err, data) => {
console.log(err || data);
});
所以它看起来和我非常相似.我尝试过在requestBody键上使用或不使用引号,并且还尝试过更新不同的键值,例如 givenName
和 suspended
.我猜我的请求格式不正确,但由于没有错误返回,因此无法解决.有关下一步尝试的任何线索或想法?这是返回的json中一些更相关的行:
So it looks pretty similar to me.I have tried with and without quotation marks on the requestBody key and have also tried updating different key values like givenName
and suspended
. I'm guessing my request is malformed somehow but I can't work out how as no error is returned.Any clue or ideas of what to try next?Here are some of the more relevant lines from the returned json:
status: 200,
params: { requestBody: { primaryEmail: 'cat@jopfre.com' } },
_hasBody: true,
header: 'PUT /admin/directory/v1/users/dog@jopfre.com?requestBody%5BprimaryEmail%5D=cat%40jopfre.com HTTP/1.1\r\nAccept: application/json, text/plain, */*\r\nContent-Type: application/x-www-form-urlencoded\r\nAuthorization: Bearer ya29.GlwXBi796knRrOTbzvJ1ihzBaQqHKk3HYA9-3pxUgCxaCvPKxZLYGRrghq_RcFHbZYqyKEqUV6yOWusBui2Vh1DLd50MsKQ5o4MoqzutVr8P280ULY2cYzSYLtGOyw\r\nUser-Agent: google-api-nodejs-client/1.6.1\r\nHost: www.googleapis.com\r\nConnection: close\r\nContent-Length: 0\r\n\r\n',
path: '/admin/directory/v1/users/dog@jopfre.com?requestBody%5BprimaryEmail%5D=cat%40jopfre.com',
responseUrl: 'https://www.googleapis.com/admin/directory/v1/users/dog@jopfre.com?requestBody%5BprimaryEmail%5D=cat%40jopfre.com',
_requestBodyLength: 0,
不确定requestBodyLength是否应为0,这似乎不正确.
Not sure if the requestBodyLength should be 0, that seems off.
推荐答案
googleapis
30.0.0版的有效发行版 resource
和 requestBody
是同样被接受.以下是 users.insert
, users.list
, users.update
, users.get
和 users.delete
函数,均已通过 googleapis
30.0.0版
Effective release of googleapis
version 30.0.0 resource
and requestBody
are equally accepted.Below are working examples for users.insert
, users.list
, users.update
, users.get
and users.delete
functions, all tested with googleapis
version 30.0.0
async function insertUser(auth) {
const service = google.admin({version: 'directory_v1', auth});
console.log("Inserting user");
const response = await service.users.insert({
"requestBody":{
"name": {
"familyName": "Friends",
"givenName": "John Smith",
},
"password": "**********",
"primaryEmail": "j.smith@jopfre.com",
}
})
// Log the results here.
console.log(`status: ${response.status}\nprimary email: ${response.data.primaryEmail}\nupdated familyName: ${response.data.name.fullName}`)
console.log("\n"); // insert a line break.
}
async function listUsers(auth) {
console.log('Listing users')
const service = google.admin({version: 'directory_v1', auth});
const response = await service.users.list({
customer: 'my_customer',
maxResults: 150,
orderBy: 'email',
})
const users = response.data.users;
if (users.length) {
console.log('Users:');
users.forEach((user) => {
console.log(`${user.primaryEmail} -(${user.name.fullName})`);
});
} else {
console.log('No users found.');
}
console.log("\n"); // insert a line break.
}
async function updateUserInfo(auth) {
console.log('Updating user info')
const service = google.admin({version: 'directory_v1', auth});
const response = await service.users.update({
"userKey": "j.smith@jopfre.com",
"requestBody": {
"name": {
"familyName": "Work"
},
"primaryEmail": "john.smith@jopfre.com"
}
})
// Log the results here.
console.log('User info is updated successfully')
console.log(`status: ${response.status}, prime email: ${response.data.primaryEmail} updated familyName: ${response.data.name.familyName}`)
for (i = 0; i < response.data.emails.length; i++) {
console.log(`address: ${response.data.emails[i]["address"]}`)
}
console.log("\n"); // insert a line break.
}
async function getUserMeta(auth) {
console.log('Getting user info')
const service = google.admin({version: 'directory_v1', auth});
const response = await service.users.get({
"userKey" : "j.smith@jopfre.com"
})
console.log('User info is obtained successfully')
console.log(`primary email: ${response.primaryEmail}, full name: ${response.data.name.fullName}`)
console.log("\n"); // insert a line break.
}
async function deleteUser(auth) {
console.log('Deleting user')
const service = google.admin({version: 'directory_v1', auth});
const response = await service.users.delete({
"userKey" : "j.smith@jopfre.com"
})
if (response.data == "") {
console.log("User is deleted successfully");
}
}
这篇关于使用google admin目录api更新用户将返回200,但不会更新.请求正文格式错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!