Github Apps 用户识别

标签 github github-api-v3 github-app

我开发了一个 github 应用程序,它监听合并事件并向组织提供分析。应用程序具有用户:读取权限。要将 git 用户与我的应用程序用户进行映射,我们需要一个电子邮件 ID。我尝试调用下面的 API,但它总是将电子邮件设为 null(可能是这些用户没有将他们的电子邮件设为公开。)。无论个人资料设置如何,我们如何访问电子邮件? .有没有其他方法可以将 git 用户映射到我们的应用程序用户(我们只有电子邮件和用户姓名)

Request req = new Request.Builder()
                .url("https://api.github.com/user/emails" + userName)
                .header("Authorization", "Bearer " + installationToken)
                .get()
                .build();
        Response resp = client.newCall(req).execute();
        String jsonResp2 = resp.body().string();
        Map userDetail = gson.fromJson(jsonResp2, Map.class);
        String email = userDetail.get("email").toString();

最佳答案

您的代码构造了错误的 URL:

.url("https://api.github.com/user/emails" + userName)
根据 the docs , https://api.github.com/user/emails URL(末尾没有用户名,在您的代码中甚至没有用斜杠分隔)将为您提供 的电子邮件地址。当前已通过身份验证的用户 只是,不是任何其他用户。
你需要的是这个:
.url("https://api.github.com/users/" + userName)
the documentation .

关于Github Apps 用户识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69694344/

相关文章:

github-enterprise - Github Enterprise API - 确定用户是否处于休眠状态?

github - 是否可以使用 github 应用程序创建用户项目(V2)?

node.js - GitHub API 在尝试生成访问 token 时返回 401

github - 在私有(private)存储库的 GItHub 工作流程中使用 secret

Git 在过去的提交中更改用户的凭据而不更改历史记录(提交日期)

ruby-on-rails - 如何在 Github 中托管 gem 并使用它?

github - 如何安全地将 Github App Install ID 与与 GitHub App 集成的网站帐户关联?

git - 从 fork 的 repo 中删除上游分支是否安全?

Github api 用于获取对给定存储库分支完成的所有提交

github - 使用GitHub list-issues-for-repository API