我正在关注http://www.yiiframework.com/wiki/459/integrating-hybridauth-directly-into-yii-without-an-extension/
的教程我包含了twitter登录,
问题是Twitter没有返回电子邮件地址Hybrid_User_Profile对象([identifier] => 2378654169 [webSiteURL] => https://tisthedomainname.co/tpAnZH2BGe [profileURL] => http://twitter.com/myhjghj [photoURL] => http://pbs.twimg.com/profile_images/639065265478965088/8zty_o1K.png [displayName] => myhjghj [描述] =>一些文字在这里 - https://tisthedomainname.co/0yuxRheYVD [firstName] => myhjghj [lastName] => [性别] => [语言] => [age] => [birthDay] => [birthMonth] => [birthYear] => [email] => [emailVerified] => [phone] => [地址] => [country] => [region] =>英国[city] => [zip] => )
并在此网址https://dev.twitter.com/rest/reference/get/account/verify_credentials中 (还告诉我如何使用此URL以及何时使用) 提到
"如果用户的帐户中没有电子邮件地址,或者电子邮件地址未经验证,则会返回null。"
对于Facebook和谷歌我正在使用电子邮件地址登录
public function login()
{
$this->username = $this->userProfile->email; //CUserIdentity
Yii::app()->user->login($this, 0);
}
那么如果用户在Twitter上没有电子邮件ID,我如何登录用户?
答案 0 :(得分:1)
您可以查看现有身份验证机制的源代码,并从中获取方法。
例如:https://github.com/SleepWalker/hoauth。以下是他如何解释他的方法:
当你计划使用像Twitter这样的社交网络时,它会返回no 来自用户个人资料的电子邮件,您应该声明verifyPassword($ password) 或用户模型中的validatePassword($ password)方法 密码(不是哈希),如果有效则返回true。
您还可以声明应标记的sendActivationMail()方法 用户帐户为非活动状态并发送邮件以进行激活。这个 方法,当它存在时将用于社交网络,如 Twitter,没有给我们关于用户电子邮件的数据(因为我们需要 证明用户输入了正确的电子邮件。)
根据需要查看并实施。