![](/img/trans.png)
[英]Facebook Open-Graph API Subscription or Update Notification without App Permission
[英]Authenticate users using Facebook API through open-graph extension in yii
我正在使用Facebook Opengraph扩展名登录系统。 Facebook登录非常正常,我也可以轻松地将数据保存在数据库表中。 但是它不对YII系统中的用户进行身份验证。
例如,我具有用于events
accessRules
,如下所示:
public function accessRules()
{
return array(
array('allow', // allow authenticated user to perform 'buy' actions
'actions'=>array('buy'),
'users'=>array('@'),
),
);
}
当用户使用Facebook登录时,无法访问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));
}
}
即使我正在使用Yii::app()->user->setState('title',$mbr->mbrm_username);
,但无法正常工作。 请帮忙!
我在controller
添加了以下规则。 这有助于认证Facebook用户。
码
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions'=>array('buy'),
'expression'=>'Yii::app()->facebook->getUser()',
),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.