我开发了一个 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/