Github V4 graphql - 无法获取组织用户贡献信息

Posted

技术标签:

【中文标题】Github V4 graphql - 无法获取组织用户贡献信息【英文标题】:Github V4 graphql - Cant get organization user contribution info 【发布时间】:2020-10-18 11:56:10 【问题描述】:

我是 Github API v3(rest)和 v4(graphql)的新手。

我创建了一个 PAT(个人访问令牌)并使用它从 github - 组织私有存储库中获取数据。

虽然能够使用 V3 api (REST) 在我的组织中获取其他用户数据(事件、提交、问题等),

使用 V4 api (Graphql) 时我无法获取信息 - 我仅在查询我自己的用户时获取信息,对于其他用户我获取零。

我使用的 graphql 查询(令牌设置在标题和我的组织中的一些用户):

query 
  user (login: "<user>") 
    contributionsCollection(from: "2020-01-01T00:00:00.000Z", to: "2020-06-25T23:59:59.999Z", organizationID: "<my_org_id>") 
      totalCommitContributions
      totalIssueContributions
      totalPullRequestContributions
      totalPullRequestReviewContributions
      totalRepositoriesWithContributedCommits
      totalRepositoriesWithContributedIssues
      totalRepositoriesWithContributedPullRequestReviews
      totalRepositoriesWithContributedPullRequests
    
  

和归零的响应(查询自己时我得到非零值):


  "data": 
    "user": 
      "contributionsCollection": 
        "totalCommitContributions": 0,
        "totalIssueContributions": 0,
        "totalPullRequestContributions": 0,
        "totalPullRequestReviewContributions": 0,
        "totalRepositoriesWithContributedCommits": 0,
        "totalRepositoriesWithContributedIssues": 0,
        "totalRepositoriesWithContributedPullRequestReviews": 0,
        "totalRepositoriesWithContributedPullRequests": 0
      
    
  

在 REST api 中:

curl -H "Authorization: token <TOKEN>" -X GET 'https://api.github.com/users/<user>/events?page=1&per_page=10'

我得到信息(在上面的指定日期)

我错过了什么?

【问题讨论】:

【参考方案1】:

从这里开始:

#!/bin/bash

query=" \
  \
   \"query\": \"query  \
   \
    repository(owner: \\\"MyOrg\\\", name: \\\"some-repo-name\\\") \
      issues(last: 50, states: OPEN, labels: \\\"some label\\\") \
        edges \
          node \
            title\
            body\
            url\
            createdAt\
            lastEditedAt\
          \
        \
      \
    \
   \" \
  \
"

curl -H "Authorization: bearer XX-your-PAT-goes-here-XX" \
  -X POST \
  -d "$query%%$'\n*'" \
  https://api.github.com/graphql |
  jq --compact-output '.[] | .repository.issues.edges[] | .node' |
  while read -r object; do
    echo "================================"

    # determine last edit date and time
    lastEditedAt=$(prettify_date $(echo "$object" | jq '.lastEditedAt'))
    createdAt=$(prettify_date $(echo "$object" | jq '.createdAt'))

    echo "$createdAt -- $lastEditedAt"

    [[ $lastEditedAt == nul ]] &&
      reallyLastEditedAt="$createdAt" ||
      reallyLastEditedAt="$lastEditedAt"

    title=$(echo "$object" | jq '.title')
    content="$(echo "$object" | jq '.body' | sed -e 's/^"//' -e 's/"$//')"
    
    echo $content | sed 's!\\r\\n!\n!g' 
   done

【讨论】:

以上是关于Github V4 graphql - 无法获取组织用户贡献信息的主要内容,如果未能解决你的问题,请参考以下文章

GitHub API v4 Graphql:获取当前授权用户组织及其存储库

如何将 Github API v4 (graphql) 与 javascript XMLHttpRequest 一起使用

markdown Github API v4 GraphQL

GitHub V4 GraphQL API with Java 使用一些 GraphQL Java 库(如果可用)

GraphQL 复杂 cURL 查询(GitHub API v4)

通过 Github Graphql v4 API 列出所有用户