使用Microsoft Graph API查询组ID时遇Request_UnsupportedQuery错误
解决Microsoft Graph API按组名查询组ID的报错问题
你的代码存在几个关键问题,导致出现Request_UnsupportedQuery错误,以下是具体修正方案:
1. 过滤条件的字符串未加引号
Graph API的$filter规则中,匹配字符串值必须用单引号包裹。你的代码直接拼接group变量,生成的URL会是displayName eq Test,正确格式应为displayName eq 'Test'。
2. 变量名不匹配
你初始化了https = urllib3.PoolManager(),但发起请求时误用了http.request,这会导致运行时变量未定义的错误。
3. 用eval解析响应数据存在风险且不规范
eval存在安全隐患,且JSON格式的响应数据应该用json.loads来解析,这是更标准、安全的做法。
修正后的完整代码
import urllib3 import json group = 'Test' # 给组名添加单引号,修正过滤条件格式 uri5 = f'https://graph.microsoft.com/v1.0/groups?$count=true&$filter=displayName eq \'{group}\'' payload5 = { 'Authorization': token, 'Host': 'graph.microsoft.com', 'ConsistencyLevel': 'eventual' } https = urllib3.PoolManager() # 使用正确的变量名发起请求 response5 = https.request('GET', uri5, headers=payload5) # 用json.loads解析响应数据 mydict5 = json.loads(response5.data) # 注意:接口返回的组数据是数组,需取第一个匹配项的id if mydict5.get('value'): groupID = mydict5['value'][0]['id'] else: print("未找到匹配的组")
额外注意事项
- 确保你的应用已获得
Group.Read.All或同等权限,否则会出现权限不足的错误。 - 若存在多个同名组,需要额外处理数组结果,避免直接取第一个元素导致逻辑错误。
内容的提问来源于stack exchange,提问作者jackrabbit
相关产品推荐
相关产品推荐

