GitHub GraphQL API无法获取隐私设置用户的Pull Request问题
问题解答
确认限制存在
确实存在这个限制:当用户开启了GitHub的活动隐私设置(如「保持我的私有贡献私密」),他们的私有仓库PR无法通过GraphQL API的search接口被查询到,哪怕是拥有仓库访问权限的公司GitHub App也会受此限制。
为什么UI能查到但API不行
GitHub UI的仓库内搜索是基于当前登录用户的组织权限视角——作为组织内成员,你有权限查看该仓库的所有PR,包括开启隐私设置用户的PR,UI会忽略用户的活动隐私设置(仅针对组织内的仓库访问场景)。
但GraphQL API的search接口属于全局搜索范畴,会严格遵循用户的隐私设置:一旦用户开启私有贡献隐私选项,他们的私有仓库活动(包括PR)不会出现在search接口的返回结果中,这个规则适用于所有第三方应用(包括公司授权的GitHub App)。
解决方案:直接查询仓库PR而非使用全局搜索
要绕过这个限制,不要用search接口,而是直接针对目标仓库查询该用户的PR。示例查询如下:
GraphQL查询语句
query UserPRsInRepo($repoOwner: String!, $repoName: String!, $userLogin: String!, $startDate: DateTime!, $endDate: DateTime!) { repository(owner: $repoOwner, name: $repoName) { pullRequests( author: {login: $userLogin} states: MERGED merged: {since: $startDate, until: $endDate} last: 100 ) { totalCount nodes { title mergedAt } } } }
对应的参数
{ "repoOwner": "你的组织名", "repoName": "目标仓库名", "userLogin": "<user_login>", "startDate": "2022-09-25T00:00:00Z", "endDate": "2022-10-30T23:59:59Z" }
这种方式直接访问仓库的PR列表,只要你的GitHub App拥有该仓库的读取权限,就能获取到该用户的PR,不受其活动隐私设置的影响。
内容的提问来源于stack exchange,提问作者marie2048
相关产品推荐
相关产品推荐

