У меня есть приложение для Android, в которое пользователь входит в систему через facebook. Я пытаюсь получить доступ к моему symfony api без входа в другое время. Можно ли подключиться к symfony только с помощью токена доступа, который я получаю от приложения Android?Войдите в Symfony от Android-устройства
ответ
Да, это возможно. Вам нужно будет реализовать custom authentication provider и, возможно, custom user provider, чтобы аутентифицировать пользователя с помощью токена (и, возможно, получить его с помощью токена).
Хорошо, так что просто обертка того, что мне удалось.
Я попытался изменить fosFacebookBundle, чтобы принять access_tokens, но в конце дня мне пришлось просто делать все с нуля, следуя ссылкам, которые я получил от Заласа. Я получил пользователя от accesstoken через класс FacebookProvider в fosFacebookBundle.
Мне пришлось вводить Facebook и FacebookProvider в свой FacebookTokenListener. Я даже не уверен, что это безопасно. Кто-то может войти в систему с токеном доступа с другого сайта (я еще не тестировал его). Accesstoken также является открытым текстом в заголовке. В целом не очень хорошее решение.
$this->facebook->setAccessToken($request->headers->get("access_token"));
$fbUid = $this->facebook->getUser();
if(!$fbUid){
throw new AccessDeniedHttpException("invalid access token");
}
$user = $this->facebookProvider->findUserByFbId($fbUid);
$token = new FacebookTokenToken($user);
Спасибо за ссылки!