如何通过G-Suite API获取账号设备活动与安全事件登录历史?
获取Google Workspace账号登录历史的API方案
你提到的网页端「我的账号 -> 登录与安全 -> 设备活动与安全事件」里的登录历史数据,确实可以通过Google Workspace的官方API来获取,对应的是Admin SDK Reports API的登录审计事件模块,下面是具体的实现途径:
1. 对应API资源
你需要使用Admin SDK Reports API中的userLoginEvents资源,这个接口专门用于拉取用户的登录活动记录,完全匹配网页端展示的登录时间、设备信息、IP地址、登录状态等数据——即使没有配置MDM系统也能正常使用。
2. 权限配置
根据你的用户身份不同,需要申请的权限也不一样:
- 普通Workspace用户:只需要申请
https://www.googleapis.com/auth/admin.reports.user.readonly权限,这个权限允许你访问自己的登录历史,不需要域管理员审批,只要自己在授权流程中同意即可。 - 域管理员:如果需要获取整个域内所有用户的登录记录,可以申请
https://www.googleapis.com/auth/admin.reports.audit.readonly权限。
3. 调用示例
REST API 请求示例
你可以直接发送GET请求来获取数据,其中{userKey}替换为me即可指代当前授权的用户:
GET https://admin.googleapis.com/admin/reports/v1/activity/users/me/applications/login
请求返回的JSON数据中,events数组会包含每一条登录记录的详细信息,比如登录时间(id.time)、IP地址(ipAddress)、设备类型(deviceDetails.deviceType)、登录结果(events[].name为login_success或login_failure)等。
客户端库调用(以Python为例)
如果你用Google Client Libraries开发,可以参考以下代码片段:
from googleapiclient.discovery import build from google.oauth2.credentials import Credentials # 假设你已经完成了OAuth 2.0授权,获取到了credentials creds = Credentials.from_authorized_user_file('token.json') service = build('admin', 'reports_v1', credentials=creds) # 获取自己的登录历史 results = service.activities().list(userKey='me', applicationName='login').execute() events = results.get('items', []) if not events: print('No login events found.') else: print('Login events:') for event in events: print(f"{event['id']['time']} - {event['ipAddress']} - {event['events'][0]['name']}")
4. 前置准备
在调用API之前,你需要完成以下步骤:
- 登录Google Cloud Console,创建一个新项目。
- 在项目中启用「Admin SDK」API。
- 配置OAuth 2.0客户端ID,选择适合你的应用类型(比如桌面应用、Web应用)。
- 完成OAuth授权流程,获取访问令牌和刷新令牌。
内容的提问来源于stack exchange,提问作者Ori Shalev
相关产品推荐
相关产品推荐

