Play Framework добавляет # _ = _ для перенаправления после авторизации Facebook через OAuth2?
Я делаю простую переадресацию после вызова OAuth2:: retrieveAccessToken() в Play Framework. У меня смешные персонажи, добавленные к URL-адресу, который я никогда туда не помещал, поэтому конечный результат выглядит следующим образом:
http://localhost:9000/#_=_
Откуда на земле появляется _ _ = _? Здесь мое определение маршрута из файла маршрутов:
GET/Application.index
Здесь приведен фрагмент кода контроллера, использующего аутентификацию Facebook:
public static void facebookConnect() {
OAuth2 facebook = new OAuth2(
"https://graph.facebook.com/oauth/authorize",
"https://graph.facebook.com/oauth/access_token",
"2#############6",
"c##############################2"
);
if(OAuth2.isCodeResponse()) {
OAuth2.Response oauthResponse = facebook.retrieveAccessToken(facebookAuthUrl());
if(oauthResponse.error == null) {
//... Somewhere here, something is causing #_=_ to be appended to the URL?
Application.index();
}
}
facebook.retrieveVerificationCode(facebookAuthUrl());
}
EDIT:
Согласно этой странице, Facebook недавно изменил свой API, чтобы включить =, если request_uri пуст, проблема в том, что... мой request_uri имеет явно заданы?
Ответы
Ответ 1
Это было добавлено после обновления безопасности.
Из блога разработчиков Facebook:
Изменение поведения переадресации сеанса
На этой неделе мы начали добавлять фрагмент #_=_
в redirect_uri когда это поле остается пустым. Убедитесь, что ваше приложение может обрабатывать это поведение.
Ответ 2
Возможно, эти символы приходят из обратного вызова facebook. Я получал обратный вызов FB, например
localhost:9000?someparams#code=verylongcodefromfacebook
Я мог бы избавиться от # просто, дезактивируя параметры перед запросом токена доступа.