php symfony oauth mautic

php - Intento llamar a un método indefinido llamado "validateAccessToken" cuando se usa la api-library de Mautic en Symfony



oauth (1)

Estoy intentando usar mautic / api-library dentro de mi proyecto Symfony. Estoy usando Symfony 2.8.9 con PHP 5.6.14.

Incluí el proyecto api-library en el compositor y en el archivo autoload.php. En mi controlador, he declarado api-library classes:

use Mautic/Auth/ApiAuth; use Mautic/Auth/OAuth;

Y traté de obtener un token de mi instalación de mautic:

$settings = array( ''baseUrl'' => ''http://mymauticinstallation.com'', ''version'' => ''OAuth1a'', ''clientKey'' => ''myCLientKey'', ''clientSecret'' => ''mySecretClient'', ''callback'' => ''https://api.mysymfonyapp.com/'' ); $auth = new ApiAuth(); $auth->newAuth($settings); if ($auth->validateAccessToken()) { if ($auth->accessTokenUpdated()) { $accessTokenData = $auth->getAccessTokenData(); } }

Pero cuando trato de ejecutar este código, obtengo este error en mi consola:

request.CRITICAL: Uncaught PHP Exception Symfony/Component/Debug/Exception/UndefinedMethodException: "Attempted to call an undefined method named "validateAccessToken" of class "Mautic/Auth/ApiAuth"

Mirando dentro de la clase ApiAuth de ApiAuth , el método newAuth usa una instanciación por reflexión:

public function newAuth($parameters = array(), $authMethod = ''OAuth'') { $class = ''Mautic//Auth//'.$authMethod; $authObject = new $class(); ... return $authObject; }

De acuerdo con el mensaje de excepción, la reflexión no devuelve una instancia de clase OAuth. ¿Alguien sabe lo que está causando esto? Lo he verificado y estoy cumpliendo con los requisitos mínimos para PHP y Symfony. ¿Hay algo relacionado con la versión y la reflexión de PHP?

Gracias por adelantado.


request.CRITICAL: Uncaught PHP Exception Symfony/Component/Debug/Exception/UndefinedMethodException: "Attempted to call an undefined method named "validateAccessToken" of class "Mautic/Auth/ApiAuth"

Significa que el método validateAccessToken no existe en Mautic/Auth/ApiAuth , de hecho no está definido allí, sino en Mautic/Auth/OAuth .

// Mautic/Auth/ApiAuth public function newAuth($parameters = array(), $authMethod = ''OAuth'') { $class = ''Mautic//Auth//'.$authMethod; $authObject = new $class(); ... return $authObject; // <-- it returns an object, use it! }

Entonces, lo que te perdiste es almacenar el objeto devuelto en una variable para usarlo

$apiAuth = new ApiAuth(); $auth = $apiAuth->newAuth($settings); if ($auth->validateAccessToken()) { if ($auth->accessTokenUpdated()) { $accessTokenData = $auth->getAccessTokenData(); } }