2013-05-30 140 views
1

我正在尝试使用Crugeconnector在Yii网站上工作的Facebook上登录。 http://yiiframeworkenespanol.org/wiki/index.php?title=CrugeConnector。这是用西班牙语,但谷歌翻译适用于它。与YII有困难Crugeconnector

无论如何,我现在的问题是成功函数没有被调用,我不知道为什么。以下代码位于组件数组下的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

我想你把这个功能放在现场控制器,如果功能存在比只放一条线。

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 } ?> 
1

IM笔者在此警予延长。 问题不在于回调本身。问题在于你自己的访问规则。尝试使扩展程序所需的操作成为用户免费的,换句话说,这些操作应该超出任何访问规则。在你的应用程序中告诉系统,这个动作可以由anonymouse用户执行(访问规则中的*(asterisc))。

希望它可以帮助你。