google android google-app-engine facebook-graph-api authentication google-cloud-endpoints

android - google - endpoints documentation



Google Cloud Endpoints y la autenticación del usuario (2)

Cuando intento su ejemplo, siempre obtengo una: java.lang.NullPointerException: authDomain debe especificarse. Pero no puedo establecer un authDomain en el objeto Usuario. ¿Algunas ideas?

ACTUALIZACIÓN: Esto está conectado a este error https://code.google.com/p/googleappengine/issues/detail?id=12060&q=endpoints&colspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner%20Log

en la versión 1.9.22

Actualmente soy nuevo en el mundo de App Engine y quiero crear un back-end usando Cloud Endpoints para una aplicación móvil que estoy desarrollando.

Uno de mis problemas ahora es acerca de la autenticación del usuario. He estado siguiendo el MOOC de Udacity en App Engine, y nos enseñaron cómo autenticar al usuario para solicitar API utilizando cuentas de Google. En el lado de backend, simplemente tenemos que agregar un parámetro de User a nuestro método y verificar si el usuario ha iniciado sesión. Por lo que sé, este parámetro de usuario es generado por App Engine, basado en el encabezado de Authorization de nuestra solicitud. ( podría necesitar alguna confirmación allí )

Ahora, hay un montón de cosas que no estoy seguro de entender y que no estaban bien explicadas en este MOOC.

Ahora, me gustaría saber si esto es compatible con otros esquemas de OAuth, además de Google. Entonces, si quiero implementar la autenticación de Facebook, ¿simplemente pasaré el token de acceso de Facebook?

Por lo que busqué, el uso del SDK de Facebook en Android me llevaría a generar un token de acceso de usuario, que identifica a mi usuario en Facebook . Después de enviarlo a mi back-end, me gustaría verificar su validez con Facebook, y si es válido, crear un nuevo usuario para mi aplicación. Ahora, también me gustaría generar un nuevo token que identifique al usuario a mi aplicación . ¿Qué debería hacer para hacerlo?


Puede suministrar su propio autenticador a Endpoints y el usuario inyectado se obtendrá con su autenticador https://developers.google.com/appengine/docs/java/endpoints/javadoc/com/google/api/server/spi/config/Authenticator.html .

Las credenciales de Facebook se pueden enviar a través de un encabezado, por ejemplo, el encabezado de autorización y se puede acceder desde el back-end a través de HttpServletRequest, que puede manejar dentro del método Authenticator.authenticate.

Por ejemplo.

// Custom Authenticator class public class MyAuthenticator implements Authenticator { @Override public User authenticate(HttpServletRequest request) { String token = request.getHeader("Authorization"); if (token != null) { String user = authenticateFacebook(token); // apply your Facebook auth. if (user != null) { return new User(user); } } return null; } } // Endpoints class. @Api(name = "example", authenticators = {MyAuthenticator.class}) public class MyEndpoints { public Container getThing(User user) { Container c = new Container(); if (user != null) { c.email = user.getEmail(); } return c; } public class Container { public String email; public String extraData; } }