1

我正在尝试使用 Crugeconnector 登录在 Yii 网站上工作的 facebook。http://yiiframeworkenespanol.org/wiki/index.php?title=CrugeConnector。它是西班牙语的,但谷歌翻译可以很好地使用它。

无论如何,我目前的问题是没有调用successfunction,我不知道为什么。以下代码在我的 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 创建一个帐户,如果登录成功功能有效,这将相当容易完成,但这是我的问题。

谢谢你的帮助。

4

2 回答 2

1

我是这个 yii 扩展的作者。问题不在于回调本身。问题是您自己的访问规则。尝试使扩展程序所需的操作不受用户限制,换句话说,这些操作应该超出任何访问规则。在您的 yii 应用程序中告诉系统此操作可以由匿名用户执行(访问规则中的 *(星号))。

希望它可以帮助你。

于 2014-08-26T21:55:56.833 回答
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 } ?>
于 2014-03-06T10:44:01.793 回答