it-swarm.com.de

Parameter in externe Datei übernehmen

Ich versuche, ein Vimeo-Video-Wiedergabelistenskript in ein Modul einzubetten, habe jedoch Probleme, $ token param zu erhalten.

Dies ist eine Datei, in der ich den Vimeo-Schlüssel, das Geheimnis und den Token mithilfe der offiziellen PHP-Bibliothek erhalte: https://github.com/vimeo/vimeo.php

outside-web-root-settings.php:

define( '_JEXEC', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../../..' ));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
$user =& JFactory::getUser();
$session =& JFactory::getSession();

jimport( 'joomla.application.module.helper' );
$module = JModuleHelper::getModule('mod_module');
$moduleParams = new JRegistry();
$moduleParams->loadString($module->params);
    $vkey = $moduleParams->get('vimkey'); 
    $vsecret = $moduleParams->get('vimsecret'); 
    $vtoken = $moduleParams->get('vimtoken'); 

    $key = '$vkey'; 
    $secret = '$vsecret';
    $token = '$vtoken';

Das Skript bekommt korrekt $vkey und $vsecret params aber nicht die $vtoken. Ich bekomme diesen Fehler auf der Konsole:

Sie müssen ein gültiges authentifiziertes Zugriffstoken bereitstellen.

und ich bekomme dies für den var_dump des $ vtoken

string(32) "3wsrsdf234mytoken2342werwr"

Aber wenn ich den Parameter $ token ändere in:

$token = '3wsrsdf234mytoken2342werwr';

Dann funktioniert das Skript einwandfrei. Wie kann ich dieses Problem beheben?


vimeo_data.php

require_once("../../outside-web-root-settings.php");

if(!isset($_REQUEST['type']) || !isset($_REQUEST['page']) || !isset($_REQUEST['per_page']) || IsNullOrEmpty($key) || IsNullOrEmpty($secret) || IsNullOrEmpty($token)) exit("PHP Vimeo information missing!");

function IsNullOrEmpty($v){
    return (!isset($v) || trim($v)==='');
}

$type = $_REQUEST['type'];
$page = $_REQUEST['page'];
$per_page = $_REQUEST['per_page'];
$path = isset($_REQUEST['path']) && !IsNullOrEmpty($_REQUEST['path']) ? $_REQUEST['path'] : null;
$user = isset($_REQUEST['user']) && !IsNullOrEmpty($_REQUEST['user']) ? $_REQUEST['user'] : null;
$query = isset($_REQUEST['query']) && !IsNullOrEmpty($_REQUEST['query']) ? $_REQUEST['query'] : null;
$sort = isset($_REQUEST['sort']) && !IsNullOrEmpty($_REQUEST['sort']) ? $_REQUEST['sort'] : 'date';

require("../autoload.php");
use Vimeo\Vimeo;
$vimeo = new Vimeo($key, $secret, $token);



if($type == 'vimeo.channel'){

    //Get a list of videos in a Channel - https://developer.vimeo.com/api/playground/channels/{channel_id}/videos
    $result = $vimeo->request("/channels/$path/videos", array(
                                                    'page'=> $page,
                                                    'per_page' => $per_page,
                                                    'fields' => 'uri,name,description,duration,width,height,privacy,pictures.sizes',
                                                    'sort' => $sort,
                                                    'direction' => 'asc',                                   
                                                    'query' => $query));

}

echo json_encode($result);
2
Frostbourn

Versuche dies:

define( '_JEXEC', 1 );

define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../../..' ));
require_once ( JPATH_BASE .'/includes/defines.php' );
require_once ( JPATH_BASE .'/includes/framework.php' );

$mainframe = JFactory::getApplication('site');
$mainframe->initialise();

$session = JFactory::getSession();

jimport( 'joomla.application.module.helper' );

$db = JFactory::getDBO();
$db->setQuery("SELECT params FROM #__modules WHERE module = 'mod_module'");

$module = $db->loadObject();
$moduleParams = new JRegistry();
$moduleParams->loadString($module->params);

    $key = $moduleParams->get('vimkey'); 
    $secret = $moduleParams->get('vimsecret'); 
    $token = $moduleParams->get('vimtoken'); 
3
Kam.xx

PHP docs sagt:

Hinweis: Im Gegensatz zur Syntax mit doppelten Anführungszeichen und der Heredoc-Syntax werden Variablen und Escape-Sequenzen für Sonderzeichen nicht erweitert, wenn sie in Strings mit einfachen Anführungszeichen vorkommen.

So

$token = '$vtoken';

führt zu String $vtoken, nicht zu 3wsrsdf234mytoken2342werwr. Versuchen Sie echo $token; Und stellen Sie sicher, dass es keinen Wert hat, den Sie erwarten.

Entfernen Sie die unnötigen Anführungszeichen oder weisen Sie Ihre Variablen direkt aus $moduleParams Zu:

$key    = $moduleParams->get('vimkey'); 
$secret = $moduleParams->get('vimsecret'); 
$token  = $moduleParams->get('vimtoken'); 
3
Rene Korss