我正在使用Drive API检查我的Google Apps域。我成功创建了一项服务,但是当我在域上有一个被暂停的用户时,尝试获取所有用户的权限ID失败。使用我的get_about函数会导致401 Unauthorized:Invalid Credentials。反正有没有解决这个错误?我应该以某种方式创建不同类型的服务吗?现在我被迫跳过那个用户。
#Passing in a already created user service
def get_about(service):
return service.about().get().execute()
这是我创建服务的地方:
class DriveService(object):
"""
The main entry class to constructing the google drive api client service
We wrap the service so it can be used as normal but with some error
handling provided
"""
raw_service = None
http = None
auth_scope = 'https://www.googleapis.com/auth/drive'
def __init__(self, user_email):
key_file_path = os.path.join(os.path.split(__file__)[0],
SERVICE_ACCOUNT_PEM_FILE)
with open(key_file_path, 'rb') as f:
key = f.read()
credentials = SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL,
key,
scope=self.auth_scope,
prn=user_email)
self.user_email = user_email
self.http = credentials.authorize(httplib2.Http())
try:
self.raw_service = build('drive', 'v2', http=self.http,
requestBuilder=BackoffHttpRequest,
)
except:
import pdb
pdb.set_trace()
def __getattr__(self, attr):
try:
return object.__getattribute__(self, attr)
except AttributeError:
return getattr(self.raw_service, attr)
答案 0 :(得分:1)
不幸的是,没有办法解决这个问题。该帐户已被禁用,您将无法使用JWT断言对其执行任何有用的操作。
截至目前,您需要在删除/暂停用户文件之前将用户文件的所有权发送到另一个帐户。拉出所有用户的列表>所有用户的所有文件>所有文件的所有权限。从那里,您可以在本地解析所述用户名的权限ID,以获取您所追踪的数据。在我的环境中提取数据大约需要40分钟。我相信这是第三方驱动应用程序(CloudLock和General Audit Tool和Flashpanel)为获取有用数据所做的事情。可能不是你想要的答案。
在这种情况下,无需断言即可获取全局驱动器结果的API将非常有用。或者,能够通过fileID以外的其他方式查询权限将是好的。希望这是在路线图上。