2012-01-20 19 views
1

ユーザー情報を取得するために私のサイトにFacebookの「ログインボタン」があります。 Facebookが最近のことを変えるまで、それは働いていた。ユーザーが「ログイン」をクリックしたときにページを更新して、Cookieを使用してすべての情報にアクセスすることができました。Facebook auth.loginとcookieが動作しない

ログインボタンのコード(HTML):このコードは、私のページの一番下にあった

$user = json_decode(file_get_contents('https://graph.facebook.com/me?access_token=' . $cookie['access_token'])); 

<fb:login-button perms="email" oauth="true" style="float:left;"></fb:login-button> 

は、クッキー(PHP)を使用して、ユーザーの情報を取得します:

<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script> 
    FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true, 
      cookie: true, xfbml: true}); 
    FB.Event.subscribe('auth.login', function(response) { 
    window.location.reload(); 
    }); 
</script> 

そして私はクッキーを取得する目的で、このPHPの機能を持っていた:今ではauth.loginは発生しませんようだ

function get_facebook_cookie($app_id, $application_secret) { 
    $args = array(); 
    parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args); 
    ksort($args); 
    $payload = ''; 
    foreach ($args as $key => $value) { 
    if ($key != 'sig') { 
     $payload .= $key . '=' . $value; 
    } 
    } 
    if (md5($payload . $application_secret) != $args['sig']) { 
    return null; 
    } 
    return $args; 
} 

global $cookie; 
$cookie = get_facebook_cookie(FACEBOOK_APP_ID, FACEBOOK_SECRET); 

。ユーザーが「ログイン」ボタンをクリックすると、ポップアップが表示されます。しかし、ユーザーがアプリケーションを許可すると、ポップアップが閉じられ、何も起こりません。前に、現在のページをリロードします。これは、auth.loginによって引き起こされた(または引き起こされた)ものであり、その部分が壊れていると私を導くものです。しかし、auth.loginをauth.statusChangeに置き換えようとしましたが、ページがロードされるたびに呼び出されるため、ページが何度もリフレッシュされてしまいました。一日の終わりに、私のクッキーがもう作成されていないようです。私は誰か他の人がこの問題を抱えているかどうかを調べるために多くの掘り下げを行ったが、役に立たないものは見つけられなかった。

主な問題は、Cookieが作成されていないことですあなたのFB.initで

+0

ローカルホスト上のこの出来事ですか? localhostで同じ問題を抱えているプロジェクトでも同じ問題が発生していますが、別のサーバーで問題なく動作します。 FB.login()は、fbsr_クッキーを配置しない点を除いて正常に動作します。 –

答えて

0

、OAuthの追加してみてください:真

FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true, cookie: true, xfbml: true, oauth:true}); 
+0

私はそれを加えましたが、それはまったく違うことを起こさなかったのです。 –

関連する問題