我有一个用户通过Facebook登录的Android应用程序。我试图访问我的symfony api而无需另一次登录。是否可以使用我从Android应用程序获取的访问令牌登录symfony?
答案 0 :(得分:1)
是的,有可能。您需要实现custom authentication provider,可能还需要custom user provider来使用令牌对用户进行身份验证(并可能通过令牌检索他)。
答案 1 :(得分:1)
好的,这只是我设法做的事情的总结。
我试图修改fosFacebookBundle以接受access_tokens但是在一天结束时我不得不从Zalas获得链接后从头开始做所有事情。我通过fosFacebookBundle中的FacebookProvider类从accesstoken获得了用户。
我不得不将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);
感谢您的链接!