我正在使用spring-social / spring-social-github,以便通过我的Spring Boot Web应用程序中的GitHub对用户进行身份验证。
为了登录用户,我创建了以下html表单:
<form action="http://example.com/auth/github" method="POST">
<input name="scope" value="user,gist" type="hidden">
<button type="submit">Sign in with GitHub</button>
</form>
除了我无法获得用户电子邮件地址外,一切正常。
根据GitHub文档GitHub OAuth API user
范围包括user:email
和user:follow
。
有什么不对?
已更新
在与GitHub支持人员交谈之后,我有更多关于此问题的信息:
问题是此库使用以下https://api.github.com/user端点以获取用户配置文件。该端点返回用户的公共电子邮件地址,用户无需指定公用电子邮件地址。因此,如果用户没有定义公共电子邮件地址,则会返回空值。
https://api.github.com/user/emails端点返回私人电子邮件地址列表,该列表应始终至少有一个地址。
是否可以扩展spring-social-github库以便为用户电子邮件地址调用https://api.github.com/user/emails端点?
现在我无法覆盖GitHubTemplate.initSubApis()
以初始化我自己的UserTemplate.getUserProfile()
版本,因为GitHub Template.initSubApis
是私有方法..