Php 如何使用facebook、谷歌的认证信息。。。易建联

Php 如何使用facebook、谷歌的认证信息。。。易建联,php,authentication,yii,Php,Authentication,Yii,我的网站使用默认的Yii用户模型:用户->id,用户->用户名。。。 几乎网站上的激活都是基于用户帐户的 然后,我通过谷歌、facebook登录。。。通过使用扩展。这个扩展现在运行良好。我可以从他们那里得到用户名和用户id 问题是我的网站只使用Yii的用户帐户来控制进程,所以谷歌的帐户不能做任何事情 如何将Yii的用户帐户与Google或Facebook用户帐户同步?这确实很容易 首先,您必须为您的用户创建一个表/模型(或使用您已有的表/模型) 然后,对于从OAuth回调的操作(我的名为Site

我的网站使用默认的Yii用户模型:用户->id,用户->用户名。。。 几乎网站上的激活都是基于用户帐户的

然后,我通过谷歌、facebook登录。。。通过使用扩展。这个扩展现在运行良好。我可以从他们那里得到用户名和用户id

问题是我的网站只使用Yii的用户帐户来控制进程,所以谷歌的帐户不能做任何事情


如何将Yii的用户帐户与Google或Facebook用户帐户同步?

这确实很容易

首先,您必须为您的用户创建一个表/模型(或使用您已有的表/模型)

然后,对于从OAuth回调的操作(我的名为
SiteController/actionlogingogledo
),您必须连接到标准的Yii用户管理。我写了这几行代码,一切都很神奇(login/logout/
Yii::app()->user
/ecc):


同步到底意味着什么?您想获得更多详细信息吗?您可以发布您的登录代码吗?所以我可以帮忙吗?我想我找到了解决方案,从社交网络获取电子邮件,然后使用该电子邮件登录(如果它已经存在于我的web应用程序中),否则,我将根据社交网络的认证信息注册新用户。谢谢。你能解释一下“$duration;//days”行吗当然,对不起。它是登录的过期时间。在这里,我禁用了它,因为我还在开发。您可以通过查看文件
protected/models/LoginForm
了解如何设置它。在这里,它被定义为:
$duration=$this->rememberMe?3600*24*30 : 0; // 30天
public function actionLoginGoogleDo()
{
    // Replace the next line with your Eauth extension
    $email = Yii::app()->googlePlus->getDetails();

    // Here fetch your user model.
    // In my case if a user is not found, a new one is created.
    $user = User::getUser($email);

    // This is the actual hook in the Yii framework
    $identity=new UserIdentity($email, null);
    $duration; // days
    Yii::app()->user->login($identity,$duration);

    // Redirect to the main controller/action
    $this->redirect(array('site/index'));
}