2011-06-22 13 views
1

iframeのfacebookアプリを作成しましたが、facebookの外でアプリを無効にして、直接URLでアプリを開くことはできません。私はjavascriptで解決策を見つけましたが、私はそれをPHPで必要としています。一部のユーザーがブラウザでそれを無効にしているので、私は、リファラを使用することはできませんfacebook以外のfacebookアプリiframeを無効にするには

あなたが任意の応答を取得する場合...

答えて

2

リクエストで送信されたsigned_requestパラメータがあるかどうかを確認できます。 facebook内でアプリケーションを開くと、signed_requestよりもアプリケーションが開いています。

もう1つ問題があります。
signed_requestが有効であるかどうかをチェックする必要があり、そのためにあなたが方法

パブリック関数parse_signed_request($ signed_request、$秘密){ リスト($のencoded_sig、$ペイロード)=(爆発 ''、$のsigned_request parse_signed_request使用することができます、2)。

// decode the data 
    $sig = $this->base64_url_decode($encoded_sig); 
    $data = json_decode($this->base64_url_decode($payload), true); 

    if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') { 
     error_log('Unknown algorithm. Expected HMAC-SHA256'); 
     return null; 
    } 

    // check sig 
    $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true); 
    if ($sig !== $expected_sig) { 
     error_log('Bad Signed JSON signature!'); 
     return null; 
    } 

    return $data; 
} 

$ data ['user_id']が存在するかどうか、またはログインしたユーザーと等しいかどうかを確認できます。 このようにリダイレクトできない場合
echo "<スクリプトタイプ= 'text/javascript'> top.location.href = '$ this-> loginUrl'; </script>"; また、PHPからリダイレクトする方法もあります。 (リダイレクト方法は古いphp sdkにありました)

1

あなたの唯一の現実的な選択肢は、何らかの形でFacebookのAPIを使用しよう、と見ることだろう。

関連する問題