今日の昼過ぎ、FacebookのAuth Dialogでエラーが発生して、ユーザがFacebook連携アプリに対してログインできなくなるという騒ぎがありました。これは、Augh Dialogの旧URLを新しいものへとリダイレクトする処理でFacebook側にバグがあった為で、現在は復旧しています。

不具合の詳細

詳細についてはこちらのバグ報告が詳しいです。
要点としては、旧URLへユーザを誘導した場合、新しいAuth Dialog URLに対してリダイレクトされるべきところが、クエリパラメータが間違った状態でリダイレクトされるという不具合です。

旧Auth Dialog URL:
https://graph.facebook.com/oauth/authorize?client_id=147366981996453&redirect_uri=http%3A%2F%2Ffacebook.com%2F

不具合発生時のリダイレクト先:
https://www.facebook.com/dialog/oauth?app_id=147366981996453&display=page&next=http%3A%2F%2Ffacebook.com%2F&response_type=code&fbconnect=1

正しいリダイレクト先:
https://www.facebook.com/dialog/oauth?client_id=147366981996453&display=page&redirect_uri=http%3A%2F%2Ffacebook.com%2F&response_type=code&fbconnect=1
この不具合が発生している間、ログインを試みると以下のような画面が表示されていました。


843760_604764966205477_31010706_o

暫定対応

これは旧URLからのリダイレクト処理の問題だったため、移行後の新しいURLでAuth Dialogを開けば防ぐことができました。Oklahomerページで紹介した対応方法がそれです。
これを紹介した段階では、バグレポートに対する公式見解は以下のようなものでした(いまはステータスが更新されたため、右上のToggle 1 older responsesをクリックしないと表示されません)。
Please note that the graph.facebook.com/oauth/authorize endpoint is deprecated in favor of www.facebook.com/dialog/oauth and that this should always be used to avoid issues.

和訳:
graph.facebook.com/oauth/authorizeのエンドポイントは www.facebook.com/dialog/oauth への移行のため廃止予定となっていることに注意してください。
その後、Facebook側の修正が完了し、旧URLからも正しくリダイレクトされるようになり、不具合発生前の状態に戻りました。

今後の対応

先ほど暫定対応として紹介しましたが、FacebookのAuth Dialogドキュメントでは、すでに旧URLでの解説はされず、完全に新URLでのみ解説されています。リダイレクトの不具合が解消されたとは言え、今後同じような不具合を避けるためにも、早めに新しい形式に対応した方が良いでしょう。詳しくは「Open Graphに触れる 2:ユーザ認証と権限の認可」を参照してください。また、最近のAuth Dialogとパーミッション周りの仕様変更については「認可ダイアログとパーミッションの仕様変更」をご覧ください。