0

私が問題にしているのは、ユーザーがこのFacebook iframeアプリに初めてログインすると、Facebookのロゴが付いた空白のページに送られることです。フォローインはスクリーンショットです。 ここに画像の説明を入力してください

以下は私のコードです、私は新しいPHPSdkを使用しています:

            $facebook = new Facebook(array(
              'appId'  => 'xxxxxxxxx',
              'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
              'cookie' => true,
            ));
            $this->facebook=$facebook;
            $this->session = $facebook->getSession();              
            $this->me = null;
            // Session based API call.
            if(!$this->session){
               if (!$this->session) {
            //echo $loginUrl = $facebook->getLoginUrl($par);
               $loginUrl = $facebook->getLoginUrl(
                    array(
                    'canvas'    => 1,
                    'fbconnect' => 0,
                    'display'   => 'page',
                    'req_perms' => 'email,publish_stream,status_update,user_birthday,user_location,user_work_history'
                    ));
               $this->request->redirect($loginUrl);
            }
            }
            if ($this->session) {
              try {
                $this->uid = $facebook->getUser();
                $this->user = $facebook->api('/me');
              } catch (FacebookApiException $e) {
                error_log($e);
              }
            }
4

1 に答える 1

1

loginUrl にリダイレクトしないでください。本質的に行っているのは、iframe を Facebook ページに移動させて、facebook の iframe に facebook を作成することです。Facebookはiframe内に表示されません。そのため、認証ページは表示されません。

トップレベルのリダイレクトを行う必要があります。iframeだけでなく、基本的にページ全体をリダイレクトします。iframe 内からトップ レベルのリダイレクトを行う 1 つの方法は、次の JavaScript を表示することです。

  <html><head>
    <script type="text/javascript">
      window.top.location.href = "<your redirect url here>";
    </script>
    <noscript>
      <meta http-equiv="refresh" content="0;url=<your redirect url here>" />
      <meta http-equiv="window-target" content="_top" />
    </noscript>
  </head></html>
于 2011-03-01T18:53:25.083 に答える