setaccesstype google javascript angularjs oauth-2.0 google-api

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>