function requestTokenJson(Application $app)
 {
     $data = array_merge($_GET, $_POST);
     if (!$app['apiApp'] || !$app['apiAppLoadedBySecret']) {
         return json_encode(array('success' => false));
     }
     // Settings
     $requestToken = new \models\API2ApplicationRequestTokenModel();
     if ($app['apiApp']->getIsCallbackUrl() && isset($data['callback_url']) && trim($data['callback_url'])) {
         if ($app['apiApp']->isCallbackUrlAllowed(trim($data['callback_url']))) {
             $requestToken->setCallbackUrl(trim($data['callback_url']));
         } else {
             return json_encode(array('success' => false, 'error_message' => 'That callback URL is not allowed'));
         }
     }
     if ($app['apiApp']->getIsCallbackDisplay() && isset($data['callback_display']) && strtolower(trim($data['callback_display'])) == "true") {
         $requestToken->setIsCallbackDisplay(true);
     }
     if ($app['apiApp']->getIsCallbackJavascript() && isset($data['callback_javascript']) && strtolower(trim($data['callback_javascript'])) == "true") {
         $requestToken->setIsCallbackJavascript(true);
     }
     // $requestToken->setUserId();  TODO
     $scopeArray = isset($data['scope']) ? explode(",", str_replace(" ", ",", $data['scope'])) : array();
     $requestToken->setIsEditor(in_array('permission_editor', $scopeArray) && $app['apiApp']->getIsEditor());
     $requestToken->setStateFromUser(isset($data['state']) ? $data['state'] : null);
     // Check
     if (!$requestToken->isAnyCallbackSet()) {
         return json_encode(array('success' => false, 'error_message' => 'You must pass a callback'));
     }
     // Generate Token
     $tokenRepo = new API2ApplicationRequestTokenRepository();
     $token = $tokenRepo->create($app['apiApp'], $requestToken);
     return json_encode(array('success' => true, 'request_token' => $token->getRequestToken()));
 }
 /**
  * @dataProvider dataForTestGetCallbackUrlWithParams
  */
 function testGetCallbackUrlWithParams($url, $params, $result)
 {
     $rt = new API2ApplicationRequestTokenModel();
     $rt->setCallbackUrl($url);
     $this->assertEquals($result, $rt->getCallbackUrlWithParams($params));
 }