$code = $headersHandler->getHeader('code'); $facebookClient = new FacebookProvider($database); $accessToken = $facebookClient->exchangeCodeForAccessToken($headersHandler->getHeader('clientId'), $headersHandler->getHeader('redirectUri'), $headersHandler->getHeader('code')); $facebookClient->setAccessToken($accessToken); $facebookClient->extendAccessToken(); /*$facebookClient->retrieveAccessTokenFromRedirect(); $accessToken = $facebookClient->getAccessToken();*/ $userData = $facebookClient->getUserData(); $outputHandler->write("user data: "); $outputHandler->write($userData); $outputHandler->write("access token: "); $outputHandler->write($accessToken); if ($headersHandler->isAuthenticated()) { // Link accounts if not linked previously and facebookID does not repeat $user = new User($database, $headersHandler->getBearer()); $facebookClient->setUserID($user->getID()); if ($facebookClient->facebookIDRepeatsAmount() == 0) { // FacebookID does not exist in the FB yet, can link $facebookClient->save(); // update JWT $user->fetchProviders(); $jwt = $user->getJWT(); $headersHandler->sendJSONData(['token' => $jwt]); $outputHandler->write('linking successful'); $outputHandler->write($jwt); } else { // Duplicate id $headersHandler->sendHeaderCode(401); $headersHandler->sendJSONData(['error' => 'facebook id duplicate']); $outputHandler->write("facebook id duplicate"); }