Authentification et moteur d'application, il y a beaucoup à lire à ce sujet, mais beaucoup semble être obsolète!Google App Engine basé sur Java, Android et authentification oauth2
Même les pages google https://developers.google.com/appengine/docs/java/endpoints/consume_android#making-authenticated-calls
Ici, ils parlent de « GoogleAccountCredential.usingAudience », mais de nos jours, vous devez utiliser GoogleAuthUtil (pour autant que je sache, s'il vous plaît me corriger si je me trompe).
J'essaie de configurer un moteur d'application en tant que backend pour mon application Android (et à l'avenir, mon application iOS). J'utilise Android Studio, j'ai utilisé le 'nouveau module' et j'ai choisi le moteur d'application avec la messagerie dans le nuage.
Je créé un point de terminaison simple, et une fonction là, voici un code:
public class ReviewEndpoint {
// Make sure to add this endpoint to your web.xml file if this is a web application.
private static final Logger LOG = Logger.getLogger(ReviewEndpoint.class.getName());
/**
* This method gets the <code>Review</code> object associated with the specified <code>id</code>.
* @param id The id of the object to be returned.
* @return The <code>Review</code> associated with <code>id</code>.
*/
@ApiMethod(name = "getReview")
public Review getReview(@Named("id") Long id) {
// Implement this function
Review r = new Review();
r.setData("test!");
Comme vous pouvez le voir, cela est bien généré par Android Studio. J'ai implémenté un peu de stuf comme créer l'objet 'review' et le retourner à la fin.
Du côté Android, je peux le faire:
ReviewEndpoint.Builder b = new ReviewEndpoint.Builder(AndroidHttp.newCompatibleTransport(), new AndroidJsonFactory(), null);
ReviewEndpoint ep = b.build();
Review review = ep.getReview(1L).execute();
data = review.getData();
et oui, je reçois "test! :)
Maintenant, je veux l'avoir authentifié. Je veux savoir quel utilisateur a écrit quoi, alors j'ai pensé que je vais utiliser le compte GMail et Facebook plus tard.
Ici, je suis bloqué. Je suis en mesure d'obtenir un jeton de l'utilisateur sur Android:
token = GoogleAuthUtil.getToken(MainScreenActivity.this, mAccount.name, "oauth2:https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.profile");
alors vous pouvez ajouter ce jeton comme des titres de compétence à la demande:
Credential cr = new Credential(BearerToken.authorizationHeaderAccessMethod()).setAccessToken(token);
ReviewEndpoint.Builder b = new ReviewEndpoint.Builder(AndroidHttp.newCompatibleTransport(), new AndroidJsonFactory(), cr);
ensuite dans le moteur app j'ai essayé de l'info de l'utilisateur, mais comment? Sera-t-il fourni en tant que «porteur»? Comment puis-je obtenir ce jeton de porteur? Devrais-je alors faire une requête API pour obtenir les données sur le serveur?
cela ne fonctionne pas:
OAuthService service = OAuthServiceFactory.getOAuthService();
try {
User user = service.getCurrentUser();
quelqu'un peut me donner une tête?
Bonjour @Boy, je suis en utilisant le service de OAuthService = OAuthServiceFactory.getOAuthService(); avec la sécurité de printemps.J'ai fait les mêmes étapes que vous avez mentionnées mais malgré l'id_token Je passe GoogleAccountCredential Object toujours ce service OAuthService = OAuthServiceFactory.getOAuthService(); try { Utilisateur utilisateur = service.getCurrentUser(); ne fonctionne pas. S'il vous plaît aider. –
Je suis désolé, ça fait presque 3 ans et je n'ai pas encore travaillé dessus. Je ne suis pas assez familier avec ceci pour vous aider plus loin :( – Boy