J'essaie de récupérer un utilisateur authentifié à partir d'une API Cloud Endpoints en Python à l'aide de endpoints.get_current_user()
. Mais get_current_user renvoie toujours None à la place d'un utilisateur authentifié. Mon client est une application Android.Impossible d'obtenir l'utilisateur authentifié à partir des points de terminaison du cloud
J'ai essayé:
1) Définition du GoogleAccountCredential dans le client:
googleAccountCredential = GoogleAccountCredential.usingAudience(
getApplicationContext(),
webClientId);
api = new Api.Builder(
AndroidHttp.newCompatibleTransport(),
new GsonFactory(),
googleAccountCredential)
.setRootUrl(apiRootUrl)
.setGoogleClientRequestInitializer(requestInitializer)
.build();
2) Définition de l'identifiant client Web utilisé par les informations d'identification compte google:
server:client_id:myid.apps.googleusercontent.com
3) Démarrage du sélecteur de compte Google et définition du compte sélectionné sur le compte GoogleCompte:
startActivityForResult(googleAccountCredential.newChooseAccountIntent(), REQUEST_GOOGLE_ACCOUNT_PICKER);
...
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUEST_GOOGLE_ACCOUNT_PICKER:
if (data != null && data.getExtras() != null) {
String accountName = data.getExtras().getString(AccountManager.KEY_ACCOUNT_NAME);
if (accountName != null) {
googleAccountCredential.setSelectedAccountName(accountName);
}
}
return;
}
super.onActivityResult(requestCode, resultCode, data);
}
4) Réglage allowed_client_ids et le public sur mon API Python:
@endpoints.api(name='api',
version='v1',
description='My API',
allowed_client_ids=[config.WEB_CLIENT_ID,
config.ANDROID_CLIENT_ID,
endpoints.API_EXPLORER_CLIENT_ID],
audiences=[config.WEB_CLIENT_ID])
class MyApi(remote.Service):
...
je peux connecter mon application Android à mon dev App Engine serveur sans les erreurs. Qu'est-ce que je rate?