可能性のある複製:
FacebookがOAuth2経由で認証した後にリダイレクトする#=を追加するPlay Framework?
他の誰かがこれが起こったことを見ましたか?
私はFacebook PHP SDKといくつかのJavaScriptを使用してFacebookキャンバスアプリを構築しています。
ユーザーにOAuth認証フローを案内すると、ブラウザのURLにこの"#_=_"
が自動的に追加されるので、URLが開始することに気付きましたこのように見えます:
http://apps.facebook.com/xxxxxxxxxxxx/#_=_
アプリプロファイルページにリダイレクトすると、URLは次のようになります。
http://www.facebook.com/apps/application.php?id=xxxxxxxxxxxx#_=_
を使用してリダイレクトしています
echo "<script type='text/javascript'>top.location.href='$appcanvasurl';</script>"
キャンバスURLに、そして
echo "<script type='text/javascript'>top.location.href='$appprofurl';</script>"
アプリプロファイルページ用。
では、なぜこの#_=_
が追加されるのですか?
更新:
トラッカーのこのバグ によると、これは仕様によるものであり、redirect_uri
に値を指定してもこれは変わりません。
そして そのページの公式Facebook返信 によると(投稿を表示するにはFacebookにログインする必要があります):
これは、潜在的なセキュリティの脆弱性を防ぐため、「設計による」とマークされています。
一部のブラウザは、URLからのハッシュフラグメントを、リダイレクト先の新しいURLの末尾に追加します(その新しいURL自体にハッシュフラグメントがない場合)。
たとえば、example1.comがexample2.comへのリダイレクトを返す場合、example1.com#abcにアクセスするブラウザーはexample2.com#abcに移動し、example1.comのハッシュフラグメントコンテンツはexample2のスクリプトにアクセスできます。 .com。
ある認証フローを別の認証フローにリダイレクトできるため、あるアプリから別のアプリにアクセスできる機密認証データを持つことができます。
これは、新しいURLフラグメントをリダイレクトURLに追加して、このブラウザーの動作を防ぐことで軽減されます。
結果のURLの美観、つまりクライアント側の動作が問題になる場合は、window.location.hash(または独自のサーバー側リダイレクト)を使用して問題のある文字を削除することができます。
これを見てください: https://developers.facebook.com/blog/post/552/
セッションリダイレクト動作の変更
今週、フラグメントの追加を開始しました
#_=_
このフィールドを空白のままにすると、redirect_uriに送信されます。アプリがこの動作を処理できることを確認してください。