/**
  * Initialize view action
  *
  * @param \TYPO3\Flow\Mvc\View\ViewInterface $view
  * @return void
  */
 protected function initializeView(\TYPO3\Flow\Mvc\View\ViewInterface $view)
 {
     $loggedUser = $this->securityContext->getAccount();
     $currentUrl = $this->request->getHttpRequest()->getUri();
     $view->assign('currentpage', $currentUrl);
     $view->assign('state', $this->base64UrlEncode($currentUrl));
     if ($loggedUser != NULL) {
         $view->assign('loggedInUser', $this->securityContext->getAccount()->getAccountIdentifier());
         $view->assign('currentUser', $this->securityContext->getAccount()->getParty());
     }
     $facebook_appid = $this->facebookService->getAppId();
     $facebook_redirecturi = $this->facebookService->getRedirectUri();
     $vkLoginUrl = $this->vkService->getAuthorizationUri();
     $this->view->assignMultiple(array('vk_url' => $vkLoginUrl, 'google_url' => $this->googlePlusService->getAuthorizationUri(), 'facebook_appid' => $facebook_appid, 'facebook_redirecturi' => $facebook_redirecturi));
 }
 /**
  * @param string $social
  * @return void
  */
 public function socialAction($social = NULL)
 {
     $args = $this->request->getArguments();
     switch ($social) {
         case "facebook":
             if ($args['connectorjson'] !== NULL) {
                 $response = json_decode($args['connectorjson'], true);
                 $token = $response['accessToken'];
                 $facebookAccounts = $this->facebookService->getAccounts($token);
                 $facebookImage = "https:////graph.facebook.com/" . $facebookAccounts['id'] . "/picture?type=large";
                 $this->createSocialAccount('facebook-' . $facebookAccounts['id'], $facebookAccounts['id'], $facebookAccounts['id'], $facebookAccounts['first_name'], $facebookAccounts['last_name'], $facebookImage, $facebookAccounts['email'], $network = "facebook", $args['return_url']);
             } else {
                 $this->addFlashMessage("access_denied");
                 $this->redirect('index', 'Standard');
             }
             break;
         case "vk":
             if (isset($args['code']) && $args['code'] !== NULL) {
                 $token = $this->vkService->getToken($args['code']);
                 if (isset($token['error']) && $token['error'] != NULL) {
                     $this->addFlashMessage($token['error']);
                     $this->redirect('index', 'Standard');
                 }
                 $data = json_decode($token);
                 $vkAccounts = $this->vkService->getAccounts($data->access_token, $data->user_id);
                 if ($args['state'] !== null) {
                     $returnUrl = $this->base64UrlDecode($args['state']);
                 }
                 $this->createSocialAccount('vk-' . $vkAccounts['response'][0]['uid'], $vkAccounts['response'][0]['uid'], $vkAccounts['response'][0]['uid'], $vkAccounts['response'][0]['first_name'], $vkAccounts['response'][0]['last_name'], $vkAccounts['response'][0]['photo_big'], $data->email, $network = "vk", $returnUrl);
             } else {
                 $this->addFlashMessage("access_denied");
                 $this->redirect('index', 'Standard');
             }
             break;
         case "googleplus":
             if (isset($args['code']) && $args['code'] !== NULL) {
                 $token = $this->googlePlusService->getToken($args['code']);
                 if (!isset($token->access_token)) {
                     $this->addFlashMessage($token->error_description);
                     $this->redirect('index', 'Standard');
                 }
                 $googleAccounts = $this->googlePlusService->getAccounts($token->access_token);
                 if ($args['state'] !== null) {
                     $returnUrl = $this->base64UrlDecode($args['state']);
                 }
                 $this->createSocialAccount('googlePlus-' . $googleAccounts['id'], $googleAccounts['id'], $googleAccounts['id'], $googleAccounts['name']['familyName'], $googleAccounts['name']['givenName'], $googleAccounts['image']['url'], $googleAccounts['emails'][0]['value'], $network = "googlePlus", $returnUrl);
             } else {
                 $this->addFlashMessage("access_denied");
                 $this->redirect('index', 'Standard');
             }
             break;
         case "twitter":
             if (isset($args['oauth_verifier']) && $args['oauth_verifier'] !== NULL) {
                 $response = $this->twitterService->getToken($args['oauth_verifier']);
                 $returnUrl = $this->base64UrlDecode($this->session->getData('return_url'));
                 if ($response !== NULL) {
                     $user_id = $response['user_id'];
                     $fullName = explode(" ", $response['since_id']->name);
                     $this->createSocialAccount('twitter-' . $user_id, $user_id, $user_id, $fullName[0], $fullName[1], $response['since_id']->profile_image_url, '', $network = "twitter", $returnUrl);
                 }
             } else {
                 $this->addFlashMessage('Something get wrong. Please, try again.', "Error", 'Error');
                 $this->redirect('index', 'Standard');
             }
             break;
     }
 }