我正在尝试使用Crugeconnector登录在Yii网站上工作的facebook。 http://yiiframeworkenespanol.org/wiki/index.php?title=CrugeConnector。它是西班牙语,但谷歌翻译很好用。
无论如何,我目前的问题是没有调用成功功能,我不知道为什么。以下代码位于components数组下的main.php中。
'crugeconnector'=>array(
'class'=>'ext.crugeconnector.CrugeConnector',
'hostcontrollername'=>'site',
'onSuccess'=>array('site/loginsuccess'),
'onError'=>array('site/loginerror'),
'clients'=>array(
'facebook'=>array(
// required by crugeconnector:
'enabled'=>true,
'class'=>'ext.crugeconnector.clients.Facebook',
'callback'=>'http://smecontracts.ie/6/facebook-callback.php',
// required by remote interface:
'client_id'=>"290200194448698",
'client_secret'=>"0608f1e94db5a3a8b6612af1c61fb25d",
'scope'=>'email, read_stream',
),
下一批代码在我的站点控制器下。
public function actionLoginSuccess($key){
error_log("In Sitecontroller successful login page", 0);
$loginData = Yii::app()->crugeconnector->getStoredData();
// loginData: remote user information in JSON format.
$info = $loginData;
error_log($info, 0);
$this->renderText('<h1>Welcome!</h1><p>'.$info.'</p> key='.$key);
$this->redirect(Yii::app()->params["GREETINGS_PAGE_LINK"]);
}
永远不会调用actionLoginSuccess函数。我调用了从未被调用过的日志文件,如上所示。最后facebook-callback.php如下所示。
<?php
error_log("In facebook-callback page", 0);
$yii=dirname(__FILE__).'/../yii/framework/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';
defined('YII_DEBUG') or define('YII_DEBUG',false);
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
$_GET['r'] = '/site/crugeconnector'; // <--using 'site' ?
$_GET['crugekey'] = 'facebook'; // <--facebook key
$_GET['crugemode'] = 'callback';
require_once($yii);
Yii::createWebApplication($config)->run();
?>
正在调用此页面。上面的error_log确实被调用,但唯一发生的事情是用户被带回我的网站上的主欢迎页面,该页面设置在Facebook应用程序创建中。我不知道从哪里开始,我需要从Facebook检索信息并使用Yii创建一个帐户,如果登录成功功能有效,这将很容易完成但是我的问题就存在了。
感谢您的帮助。
答案 0 :(得分:1)
我是这个yii扩展的作者。 问题不在于回调本身。问题是你自己的访问规则。尝试将扩展所需的操作设置为无用户,换句话说,这些操作应该超出任何访问规则。在您的yii应用程序中告诉系统该操作是由匿名用户执行的(访问规则中的*(asterisc))。
希望它可以帮到你。答案 1 :(得分:0)
我认为你把这个功能放在站点控制器中,如果存在功能,那么只放一行。
public function actions() {
return array(
'crugeconnector' => array('class' => 'CrugeConnectorAction'),
);
}
对于Facebook按钮使用此:
<?php if(Yii::app()->crugeconnector->hasEnabledClients){ ?>
<div class='crugeconnector'>
<span>Use your Facebook or Google account:</span>
<ul>
<?php
$cc = Yii::app()->crugeconnector;
foreach($cc->enabledClients as $key=>$config){
$image = CHtml::image($cc->getClientDefaultImage($key));
echo "<li>".CHtml::link($image,
$cc->getClientLoginUrl($key))."</li>";
}
?>
</ul>
</div>
<?php } ?>