javascript - google - oauth2
AngularJS y Google OAuth2 redirect_uri (2)
Lo siguiente funcionó para mí, con el modo html5 establecido en verdadero en mi aplicación.
Este código va a su controlador para la página de redirección (asegúrese de inyectar el servicio $ window):
//Get parameters from hash fragment
var params = {};
if ($window.location.hash.indexOf(''#'') === 0) {
var regex = /([^&=]+)=([^&]*)/g, m;
while (m = regex.exec($window.location.hash.substr(1))) {
params[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
}
}
//Validate params, store access token etc.
if (!params.access_token) {
//...
}
Si su aplicación no reconoce las rutas que no son #, asegúrese de que su servidor tenga habilitado el motor de reescritura y de que redirija todas las solicitudes relevantes al archivo HTML principal de su aplicación angular.
Intento crear una aplicación simple usando AngularJS y Google OAuth2 para la autenticación.
Debido a problemas de bloqueo de ventanas emergentes y a la facilidad de uso de dispositivos móviles, decidí que no utilizaría la biblioteca de clientes de las API de Google para JavaScript .
Esto me dejó la opción de hacer un redireccionamiento completo al punto final OAuth2 en google, y redirigir a los usuarios a mi aplicación con access_token.
Pensé que esto funcionaría bien. El URI de redirección sería '' http://myapp.com/#/register '' con un parámetro de consulta ''access_token'' anexado. Luego consumiría access_token y dirigiría al usuario a otro lugar en mi aplicación.
Esto no funcionó, ya que las credenciales de la API de Google ( http://developers.google.com/console ) no les gusta tener un ''#'' en los URI de redireccionamiento.
Luego intenté desactivar el requisito ''#'' en URI al usar
$locationProvider.html5Mode(true);
Esto tampoco funcionó, porque mis rutas Angulares no reconocen explícitamente la navegación (en Chrome) a '' http://myapp.com/register ''.
¿Alguna idea sobre cómo debo lograr esto?
Si está utilizando IIS, puede instalar la extensión URL Rewrite . Luego actualiza tu archivo web.config
. Por ejemplo, a continuación, config redirigirá todo a su aplicación Angular y le permitirá manejar el enrutamiento.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Angular Default" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="index.html" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>