通过yii中的开放图扩展来使用Facebook API对用户进行身份验证

时间:2013-07-31 09:24:40

标签: php facebook yii facebook-opengraph yii-extensions

我正在使用Facebook Opengraph extension登录系统。 Facebook登录工作正常,我也可以轻松地将数据保存在我的数据库表中。但它不会在YII系统中对用户进行身份验证。

例如,我accessRules的{​​{1}}如下:

events

当用户使用Facebook登录时,无法访问public function accessRules() { return array( array('allow', // allow authenticated user to perform 'buy' actions 'actions'=>array('buy'), 'users'=>array('@'), ), ); } 页面。它重定向到event/buy(用户登录时的默认页面)。

以下代码用于profile page

Facebook login

即使我使用//Facebook login $user = Yii::app()->facebook->getUser(); try{ $user_profile = Yii::app()->facebook->api('/me?scope=email'); } catch(Exception $e){} if($user) { if(Yii::app()->user->isGuest){ $mbr = Facebook::model()->findByPk($user_profile['id']); if($mbr===null){ $randomNum = rand(0,99999); $fb = new Facebook; $fb->mbrm_id = $user_profile['id']; $fb->mbrm_username = $user_profile['username'].$randomNum; $fb->mbrm_emailid = $user_profile['email']; $fb->mbrm_name = $user_profile['name']; $fb->mbrm_visits = "0"; $fb->mbrm_sts = "a"; if($fb->save()){ Yii::app()->user->setState('title',$user_profile['username'].$randomNum); $this->redirect(array('profile/view','id'=>$user_profile['username'].$randomNum)); } } else { Yii::app()->user->setState('title',$mbr->mbrm_username); $mbr->saveCounters(array('mbrm_visits'=>1)); $this->redirect(array('profile/view','id'=>$mbr->mbrm_username)); } } else { $this->redirect(array('profile/view','id'=>$mbr->mbrm_username)); } } ,但它无效。请帮忙!

1 个答案:

答案 0 :(得分:0)

我在controller中添加了以下规则。这有助于验证Facebook用户。

<强>代码

array('allow', // allow authenticated user to perform 'create' and 'update' actions
    'actions'=>array('buy'),
    'expression'=>'Yii::app()->facebook->getUser()',
),