Я использую (небольшое изменение) обходное решение из этого course, чтобы получить userId, который является нулевым, если запрос был отправлен с клиента Android.Локальные точки приложения Google App Engine userId имеют значение null
/**
* This is an ugly workaround for null userId for Android clients.
*
* @param user A User object injected by the cloud endpoints.
* @return the App Engine userId for the user.
*/
private static String getUserId(User user) {
String userId = user.getUserId();
if (userId == null) {
LOG.info("userId is null, so trying to obtain it from the datastore.");
AppEngineUser appEngineUser = new AppEngineUser(user);
ofy().save().entity(appEngineUser).now();
AppEngineUser savedUser = ofy().load().key(appEngineUser.getKey()).now();
userId = savedUser.getUser().getUserId();
LOG.info("Obtained the userId: " + userId);
}
return userId;
}
Хотя я не могу получить userId.
INFO: Obtained the userId: null
Это обходное решение уже отлично работает в других проектах, поэтому проблема должна быть в другом месте. Моя конечные точки апи помечаются следующими области, clientIds и зрителями:
scopes = {
Constants.EMAIL_SCOPE
},
clientIds = {
Constants.API_EXPLORER_CLIENT_ID,
Constants.WEB_CLIENT_ID,
Constants.ANDROID_CLIENT_ID
},
audiences = {
Constants.ANDROID_AUDIENCE
}
Constants.ANDROID_AUDIENCE
и Constants.WEB_CLIENT_ID
одинаковы. Я не использую веб-клиента, но Google told me, чтобы добавить идентификатор веб-клиента. Должен ли идентификатор этого клиента перенаправлять uris и исходные данные javascript?
В моем клиенте Android я использую следующее, чтобы указать аудиторию.
mCredential = GoogleAccountCredential.usingAudience(
EndpointService.this,
"server:client_id:IDIDIDID.apps.googleusercontent.com"
);
Пожалуйста, помогите мне разобраться в этом.
Конечная точка Google отправляет то, что создано на конечной точке, это означает, что userid не устанавливает конечную точку google на первом месте. –
извините, но я не понимаю. – raptor