0

Facebookアプリケーションの認証に問題があります。ローカルWebサーバーでアプリケーションを通常どおり実行すると、プロセスは次のようになります。

**Get facebook user->If user is not logged on -> Redirect user on facebook login page**

**Get facebook user->If user is  logged on -> Redirect user to authorize my facebook application->everything goes right without problems**

iframeを使用してFacebookでアプリケーションをホストすると、2番目のプロセスが機能せず(ユーザーが認証ウィンドウを表示することはありません)、次の例外が発生します。

Error validating access token: User xxxxxxx has not authorized application xxxxxxx.

私はCodeIgniterPHPフレームワークを使用していますが、これは私のPHPコードです。

$this->load->library('facebook');
        $user = null;
        $user_profile = null;

        $user = $this->facebook->getUser();
        if ($user) {
          try {
            // Proceed knowing you have a logged in user who's authenticated.
            $access_token = $this->facebook->getAccessToken();
            $user_profile = $this->facebook->api($user);

          } 
          catch (FacebookApiException $e) {
            show_error(print_r($e, TRUE), 500);
          }
        }
        else{
            $data = array(
            'redirect_uri' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx','scope'=>'email');
            $access_token = $this->facebook->getAccessToken();
        redirect($this->facebook->getLoginUrl($data));

        }
        $data['facebook']=$user_profile;
        $this->load->view('templates/header');
        $this->load->view('pages/prijavaKlasicnoFacebook', $data);
        $this->load->view('templates/footer');
    }
4

2 に答える 2

0

また、スコープに「Read Stream」と「Publish Data」を指定する必要があります。

于 2012-12-10T14:38:58.090 に答える
0

OAuth ダイアログを iframe にロードすることはできません – セキュリティ上の理由。

最上位のウィンドウ インスタンスにロードする必要があるため、サーバー側のリダイレクトではなく、クライアント側の「リダイレクト」を使用します。top.location.href = "…";

スクリプトを取得して、この JS スニペット (正しいログイン URL を含む) を他の空のドキュメント内に出力します。

于 2012-12-10T11:49:23.293 に答える