java - Play Framework anexando#_=_ para redirigir después de la autenticación de Facebook a través de OAuth2?
playframework oauth-2.0 (2)
Esto fue agregado después de una actualización de seguridad.
Desde el blog del desarrollador de Facebook :
Cambio en el comportamiento de redireccionamiento de sesión
Esta semana, comenzamos a agregar un fragmento
#_=_
al redirect_uri cuando este campo se deja en blanco. Por favor, asegúrese de que su aplicación puede manejar este comportamiento.
Estoy haciendo una redirección simple después de llamar a OAuth2 :: retrieveAccessToken () con Play Framework. Tengo caracteres divertidos adjuntos a la URL que nunca puse allí, por lo que el resultado final es el siguiente:
¿De dónde diablos viene el # _ = _? Aquí está mi definición de ruta del archivo de rutas:
GET / Application.index
Aquí está el fragmento de código del controlador que trata con la autenticación de 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());
}
EDITAR:
De acuerdo con esta página , Facebook cambió su API recientemente para incluir el = si request_uri está vacío, el problema es ... ¿mi request_uri se ha establecido explícitamente?
Tal vez estos personajes provienen de la devolución de llamada de facebook. Estaba recibiendo una devolución de llamada de FB como
localhost:9000?someparams#code=verylongcodefromfacebook
Podría deshacerme del # solo desinfectando los parámetros antes de solicitar el token de acceso.