谢谢你的反馈,我也发现这个问题了:https://github.com/ruby-china/ruby-china/issues/124 我们抓紧时间修复。cc @huacnlee
能否给 admin # ruby-china.org 发个邮件,告诉我你的 email 地址,我帮你手动修改。
https://github.com/ruby-china/ruby-china/blob/master/app/models/user/omniauth_callbacks.rb 这的问题吧,如果不急我可以试试,明天下午有个考试,考完修吧,ok?
但是有个问题,这种情况是应该从 omniauth 的 info 中拿邮箱呢还是提供一个修改邮箱的功能?因为有些貌似有些三方验证不返回邮箱或者返回加密邮箱。 @lgn21st @huacnlee
@davidqhr 这个问题有两个场景:
A 用户用 [email protected]
邮箱进行了注册,然后有一天他想试试用 GitHub 登录,但是登录的时候根据 omniauth 提供的 uid 系统是找不到这个 A 用户的,然后就会尝试新建用户,但是发现 omniauth 提供的邮箱 [email protected]
已经存在了,所以就按 #{provider}+#{uid}@example.com
的格式自动生成了一个邮箱,这样 A 用户就会很困惑。
B 用户第一次来就点了用 GitHub 登录,但是不幸的是他在 GitHub 的邮箱并没有进行验证,所以 omniauth 返回的邮箱是nil
,这时系统又按#{provider}+#{uid}@example.com
的格式自动生成了一个邮箱,这样 B 用户也困惑了。
A 用户的问题,可以让用户注册时对邮箱进行验证,确保注册的邮箱是用户自己的,这样类似 A 这样的用户登录的时候可以不根据 uid 而是邮箱去找用户。 B 用户这样的可以在他登录时引导他填一个邮箱并验证。
@davidqhr 如果只是允许改邮箱的话,A 用户还是没办法把用 GitHub 登录后的邮箱改成自己的 [email protected],因为用 GitHub 和他自己创建的帐号是两个不同的帐号,这样还是会很尴尬啊。
hmm 我登回来了。顺路发现了另外一个事情。
你们看这个帖子的 author 成了 guest 但是 thread 里面还是 zhuangya
有点点奇怪。