Конечные точки Google и аутентификация пользователя

Я сейчас новичок в мире AppEngine и хочу создать бэкэнд с использованием Cloud Endpoints для мобильного приложения, которое я разрабатываю.

Одна из моих проблем прямо сейчас заключается в аутентификации пользователя. Я следил за MOOD на App Engine от Udacity, и они научили нас, как аутентифицировать пользователя для запроса API, используя учетные записи Google. На стороне сервера нам просто нужно добавить параметр User к нашему методу и проверить, не подписан ли пользователь. Насколько мне известно, этот пользовательский параметр генерируется App Engine на основе заголовка Authorization нашего запроса. ( может потребоваться подтверждение )

Теперь есть куча вещей, которые я не уверен, чтобы понять, и это было не так хорошо объяснено на этом MOOC.

Теперь я хотел бы узнать, совместим ли это с другими схемами OAuth, рядом с Google? Итак, если я хочу реализовать аутентификацию Facebook, я просто передам токен доступа к facebook?

Из того, что я искал, использование Facebook SDK на Android привело бы меня к тому, чтобы создать токен доступа пользователя, который идентифицирует моего пользователя в facebook . После отправки его на мой сервер, я хотел бы проверить его достоверность с Facebook, и если он действителен, создайте нового пользователя для моего приложения. Теперь я также хочу создать новый токен, который идентифицирует пользователя для моего приложения . Что мне нужно сделать, чтобы сделать это?

Вы можете предоставить свой собственный аутентификатор конечным точкам, а введенный пользователь получит ваш аутентификатор https://developers.google.com/appengine/docs/java/endpoints/javadoc/com/google/api/server/spi/config/. Authenticator.html .

Учетные данные Facebook могут быть отправлены через заголовок, например заголовок авторизации, и к нему можно получить доступ из бэкэнд через HttpServletRequest, который вы можете обрабатывать внутри метода Authenticator.authenticate.

Например.

 // 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; } } 

Когда я попробую ваш пример, я всегда получаю: java.lang.NullPointerException: authDomain должен быть указан. Но я не могу установить authDomain в объекте User. Есть идеи?

UPDATE: это связано с этой ошибкой https://code.google.com/p/googleappengine/issues/detail?id=12060&q=endpoints&colspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner% 20log

в версии 1.9.22

  • Микширование форм с помощью проверки подлинности Windows
  • Подтвердить подпись Authenticode на EXE-C ++ без CAPICOM
  • Как обрабатывать HTTP-аутентификацию с помощью HttpURLConnection?
  • Попытка SSH в экземпляр Amazon Ec2 - ошибка разрешения
  • Упреждающий базовый аут с HttpUrlConnection?
  • Добавить Keypair в существующий экземпляр EC2
  • java.io.IOException: обнаружено не было
  • Добавление аутентификации идентификатора ASP.NET MVC5 в существующий проект
  • Может ли какой-то хакер украсть файл cookie у пользователя и войти с этим именем на веб-сайт?
  • Вложение свойств по атрибутам
  • Ошибка при вызове API API Azure Management при аутентификации с помощью azure active directory
  • Давайте будем гением компьютера.