프로필 API에서 디렉터리 API로 스크립트를 마이그레이션하려고합니다. 이 기능의 목적은 includeInGlobalAddressList 속성을 사용하여 특정 Google Apps 도메인 사용자의 연락처 정보를 관리하는 것입니다.디렉터리 API를 사용하여 includeInGlobalAddressList를 변경할 수 없습니다.
사용자 개체를 가져올 수 있으며 패치 요청을 제출할 수 있지만 변경되지 않습니다. 패치 메소드에서 반환 된 객체는 includeInGlobalAddressList의 원래 값을가집니다. api 문서에서 etags에 대한 모호한 언급이 있지만, 패치 본문이나 If-Match 헤더에 etag가 포함되어 있어야하는지는 분명하지 않습니다. (? 그 대답은 IF-Match 헤더 인 경우, 다음 어떻게 파이썬 라이브러리를 사용하여 그 통과 하죠)
http = httplib2.Http()
http = credentials.authorize(http)
service = build("admin", "directory_v1", http=http)
usersvc=service.users()
d=usersvc.get(userKey=userkey, projection="basic",fields="etag,id,includeInGlobalAddressList").execute()
visible = d['includeInGlobalAddressList']
# logic to decide what change elided. this is "transition from visible to invisible contact"
pch=json.dumps({'includeInGlobalAddressList': False, 'etag': d['etag']})
print pch
res=usersvc.patch(userKey=userkey, body=pch, fields="etag,id,includeInGlobalAddressList").execute()
print json.dumps(res, indent=4)
내가 얻을 결과는 다음과 같습니다
{"includeInGlobalAddressList": false, "etag": "\"WIg4sZOp0a-9Z5MJXVMQx1SQW5A/avXX6NaPX78Y6qFG7S4TqKFMIEU\""}
{
"includeInGlobalAddressList": true,
"etag": "\"WIg4sZOp0a-9Z5MJXVMQx1SQW5A/J0MuBtIvJoTcifknCMScMlyCQnc\"",
"id": "109793672165131484748"
}
이 발생 심지어 내가 fields
을 사용하지 않거나 etag를 전달하더라도.
patch() 메소드에 전달하기 전에 패치 본문을 문자열로 변환해야한다고 생각하지 않습니다. –