2012-03-23 9 views
3

昨日まで働いていたコードが突然エラーを投げ始めました。何が変わったのかわからないそれはまたFacebook Serve side authenticationからのコードに基づいていますまた、私は同様のタイトルで他の記事を参照しましたが、多くの運がないと言いました。ここでFacebookエラー:アプリでエラーが発生しました。後でやり直してください。

はmy_url でhttpsで試してみましたコード

<?php 

    $app_id = "my app id"; 
    $app_secret = "my app secret"; 
    $my_url = "http://apps.facebook.com/myappnamespace"; 

// //では、HTTPとHTTPSとし、同様に動作しない、両方のアプリへの直接パスを試してみました。 session_start(); $ code = $ _REQUEST ["code"];

if(empty($code)) { 
    $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection 
    $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" 
     . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state=" 
     . $_SESSION['state']; 

    echo("<script> top.location.href='" . $dialog_url . "'</script>"); 
    } 

    if($_REQUEST['state'] == $_SESSION['state']) { 
    $token_url = "https://graph.facebook.com/oauth/access_token?" 
     . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) 
     . "&client_secret=" . $app_secret . "&code=" . $code; 

    $response = file_get_contents($token_url); 
    $params = null; 
    parse_str($response, $params); 

    $graph_url = "https://graph.facebook.com/me?access_token=" 
     . $params['access_token']; 

    $user = json_decode(file_get_contents($graph_url)); 
    echo("Hello " . $user->name); 
    } 
    else { 
    echo("The state does not match. You may be a victim of CSRF."); 
    } 

?> 

答えて

0

これを修正する他の方法があるかもしれませんが、PHPの方法は通常私のために働いたことはありません。私はJavascript SDKへのアプローチを変更しています。

3

HTTPをリダイレクトURLで使用しているようですが、HTTPSで認証しようとしているようです。 $my_urlのURLをhttps://に変更し、動作するか確認してください。

+0

これは、キャンバスに読み込むのではなく、Facebookのキャンバスの外に送信します。 – pal4life

関連する問題