Подтвердить что ты не робот

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 имеет явно заданы?

4b9b3361

Ответ 1

Это было добавлено после обновления безопасности.

Из блога разработчиков Facebook:

Изменение поведения переадресации сеанса

На этой неделе мы начали добавлять фрагмент #_=_ в redirect_uri когда это поле остается пустым. Убедитесь, что ваше приложение может обрабатывать это поведение.

Ответ 2

Возможно, эти символы приходят из обратного вызова facebook. Я получал обратный вызов FB, например

localhost:9000?someparams#code=verylongcodefromfacebook

Я мог бы избавиться от # просто, дезактивируя параметры перед запросом токена доступа.