0

FacebookログインスクリプトをZendWebサイトに実装しようとして問題が発生しました。私がここで基本的にしていることは

  • My_Action_Helper_FBInitializerを作成します(Zend_Controller_Action_Helper_Abstractを拡張します)。これにより、Facebook接続が初期化されます。

  • ブートストラップでMy_Action_Helper_FBInitializerを呼び出します(すべてのコントローラーで使用できるようにするため)

  • Facebookアプリの「サイトURL」を次のように設定します:http:// localhost / test / public /(「サイトドメイン」フィールドは空白のまま)

  • 私のlayout.phtmlにログイン/ログアウトボタンが機能することを期待しています

問題:問題は、Facebook認証ウィンドウが表示されないことです。[ログイン]ボタンをクリックすると、同じページ(localhost / test / public // index / index)に「facebookセッションパラメーター」が読み込まれます。 URLに追加:

http://localhost/test/public/index/index/?session=%7B%22session_key ... [..]

ここに私のファイル:

私のアクションヘルパーFBInitializer

class My_Action_Helper_FBInitializer extends Zend_Controller_Action_Helper_Abstract
{
public function init()
{
    $controller=$this->getActionController();
    $config=Zend_registry::get('config');
    $controller->config=$config;

    //initialize facebook
    require_once('Fb/facebook.php');

    $apiKey=$config->fb->apikey;
    $appId=$config->fb->appid;
    $secret=$config->fb->appid;

    $facebook = new Facebook(array('appId'  => $appId,'secret' => $secret,'cookie' => true));
    $controller->session = $facebook->getSession();       
    $controller->fbme = NULL; 
    $controller->facebook=$facebook;

    if (!empty($controller->session)) 
    {       
        $controller->uid = $facebook->getUser();         
        $controller->fbme = $facebook->api('/me'); 
    } 
    //  

}

}

マイインデックスコントローラー

class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
    //login
    $this->view->fbme=$this->fbme;
    $this->view->fb=$this->facebook;
}
}

私のレイアウトの抜粋

[..]
if($this->fbme!==NULL)
{
echo"<img align='middle' src='https://graph.facebook.com/{$this->fbme['id']}/picture'/>"; 
echo "Welcome ".$this->fbme['name'].'! ';
$logoutUrl = $this->fb->getLogoutUrl(array('next'=>'/index/logout')); 
echo"<a href='{$logoutUrl}'>Logout</a>";

}
else
{

 echo $this->fbme;
 $loginUrl = $this->fb->getLoginUrl(array('req_perms' => 'email,read_stream,user_birthday,user_hometown,user_photos')); 
 echo "<a href='{$loginUrl}'>Login with Facebook!</a>";
}
[..]

FacebookアプリまたはZend設定のいずれかが間違っているかどうかはわかりませんが、同様の100%WORKINGスクリプト(ただし、zendはありません!)をテストしていました。

$fbconfig['appid']  = "181****";     
$fbconfig['api']  = "5c69*****";     
$fbconfig['secret']  = "a2fc*****"; 

include_once "facebook.php";     

// Create our Application instance.     
$facebook = new Facebook(array('appId'  => $fbconfig['appid'],'secret' => $fbconfig['secret'],'cookie' => true));       

$session = $facebook->getSession();       
$fbme = null;     

// Session based graph API call.     
if (!empty($session)) 
{       

  $uid = $facebook->getUser();         
  $fbme = $facebook->api('/me');       
}      

// login or logout url will be needed depending on current user state. 
if ($fbme) 
{   
  echo"<img src='https://graph.facebook.com/{$fbme['id']}/picture'/>"; 
  echo $fbme['name'].' ';
  $logoutUrl = $facebook->getLogoutUrl(array('next'=>'http://localhost/fb/logout.php')); 
  echo"<a href='{$logoutUrl}'>logout</a>";
} 
else 
{   
  $loginUrl = $facebook->getLoginUrl(array('req_perms' => 'email,read_stream,user_birthday,user_hometown,user_photos')); 
  echo"<a href='{$loginUrl}'>login</a>";
}

ありがとう

ルカ

4

0 に答える 0