2013-05-30 51 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))。

希望它可以幫助你。