Facebook コールバックはリターン URL に '#_=_' を追加します 質問する

Facebook コールバックはリターン URL に '#_=_' を追加します 質問する

#_=_Facebook コールバックはリターン URL にハッシュ アンダースコアを追加し始めました

理由を知っている人はいますか? 解決策は何ですか?

ベストアンサー1

経由Facebookのプラットフォームアップデート:

セッションリダイレクト動作の変更

今週、このフィールドが空白の場合、redirect_uri にフラグメント #____=____ の追加を開始しました。アプリがこの動作を処理できることを確認してください。

これを防ぐには、ログイン URL リクエストで redirect_uri を次のように設定します (Facebook php-sdk を使用)。

$facebook->getLoginUrl(array('redirect_uri' => $_SERVER['SCRIPT_URI'],'scope' => 'user_about_me'));

アップデート

上記はまさにドキュメンテーションこれを修正する方法は、Facebookが文書化した解決策では解決できません。Facebook プラットフォームアップデートのブログ投稿そしてフォローこのバグより良い回答を得るために、次のコードをヘッドタグに追加してください。

<script type="text/javascript">
    if (window.location.hash && window.location.hash == '#_=_') {
        window.location.hash = '';
    }
</script>

または、より詳細な代替案(ありがとうニフティレタス):

<script type="text/javascript">
    if (window.location.hash && window.location.hash == '#_=_') {
        if (window.history && history.pushState) {
            window.history.pushState("", document.title, window.location.pathname);
        } else {
            // Prevent scrolling by storing the page's current scroll offset
            var scroll = {
                top: document.body.scrollTop,
                left: document.body.scrollLeft
            };
            window.location.hash = '';
            // Restore the scroll offset, should be flicker free
            document.body.scrollTop = scroll.top;
            document.body.scrollLeft = scroll.left;
        }
    }
</script>

おすすめ記事