Как передать объект класса Tumblr через ajax

Как вы ссылаетесь на объект класса, который создается в одном файле php в другом файле php, называемом через ajax?

У меня есть проект, который использует API Tumblr для создания постов в блоге

Есть 2 файла: tumblr.php а также ajaxTumblr.php

В tumblr.phpсоздается объект Tumblr:

include_once ("Tumblr/API/Client.php");
include_once ("Tumblr/API/RequestException.php");
include_once ("Tumblr/API/RequestHandler.php");

$consumerKey = "xxxxxx";
$consumerSecret = "xxxxxx";

$client = new Tumblr\API\Client($consumerKey, $consumerSecret);
$requestHandler = $client->getRequestHandler();
$requestHandler->setBaseUrl('https://www.tumblr.com/');

Затем он проходит последовательность oauth и заканчивается $client полностью заполнен токеном доступа & token_secret. Я опустил код для этого, так как он, вероятно, не актуален.

Теперь пользователь подтвержден, и я могу делать такие вещи, как отображение информации о пользователе

$info = $client->getUserInfo();

Или даже сделать пост с некоторыми предустановленными данными.

$postData = array('title' => $title, 'body' => $body, 'format' => $format);
$client->createPost($userid, $postData);

Все идет нормально.

Теперь я собираю данные от пользователя (название & текст блога) через textareas и отправьте запрос ajax на ajaxTumblr.php с этой информацией

        $.ajax({
url: 'http://domain.com/ajaxTumblr.php',
type:'POST',
async: "false",
data: {'title': title,
'body': body,
'userid': userid,
'state': "draft",
'format': "html" },
success: function (res) {
console.log (res);
}
});

Вот где я застрял.

Как мы передаем, ссылки или воссоздать $client в файле php ajax? Я не могу сгенерировать новый объект Tumblr, так как он требует авторизации пользователя.

Я хотел бы, чтобы мой код выполнял что-то вроде:

$title = $_REQUEST['title'];
$body = $_REQUEST['body'];
$format = $_REQUEST['format'];
$userid = $_REQUEST['userid'];

$postData = array('title' => $title, 'body' => $body, 'format' => $format);
$client->createPost($userid, $postData);

Благодарю.

Обновить

В Tumblr.php, Я сохранил $client:

$_SESSION['client'] = serialize($client);

А потом в ajaxTumblr.php создал новый объект и скопировал исходный объект на новый. Это нормально делать?

include_once ("Tumblr/API/Client.php");
include_once ("Tumblr/API/RequestException.php");
include_once ("Tumblr/API/RequestHandler.php");

// OAuth Consumer Key:
$consumerKey = "xxxxxxx";
$consumerSecret = "xxxxxxxx";
$ajaxClient = new Tumblr\API\Client($consumerKey, $consumerSecret);

$client = unserialize($_SESSION['client']);
$ajaxClient = $client;

Когда я перезапустил тест, из одного из модулей класса были выданы тысячи ошибок с жалобами на неверные параметры. Возможно, я на правильном пути, но мне нужна конформация.

[04-Oct-2015 14:46:27 America/Chicago] PHP Warning:  curl_multi_add_handle() expects parameter 1 to be resource, integer given in /home3/me/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMulti.php on line 181
[04-Oct-2015 14:46:27 America/Chicago] PHP Warning:  curl_multi_exec() expects parameter 1 to be resource, integer given in /home3/me/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMulti.php on line 238
[04-Oct-2015 14:46:27 America/Chicago] PHP Warning:  curl_multi_info_read() expects parameter 1 to be resource, integer given in /home3/me/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMulti.php on line 254
[04-Oct-2015 14:46:27 America/Chicago] PHP Warning:  curl_multi_exec() expects parameter 1 to be resource, integer given in /home3/me/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMulti.php on line 238
[04-Oct-2015 14:46:27 America/Chicago] PHP Warning:  curl_multi_info_read() expects parameter 1 to be resource, integer given in /home3/me/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMulti.php on line 254
[04-Oct-2015 14:46:27 America/Chicago] PHP Warning:  curl_multi_exec() expects parameter 1 to be resource, integer given in /home3/me/vendor/guzzle/guzzle/src/Guzzle/Http/Curl/CurlMulti.php on line 238

0

Решение

В настройках приложения Tumblr запрашивается «URL обратного вызова по умолчанию». Это установлено на "tumblr.php", поэтому приложение может выполнять действия по аутентификации.

Проблема, казалось, возникла, когда ajaxTumblr.php пытается выполнить вызовы API. Обратный вызов не равен вызывающему модулю.

Кроме того, было небольшое расхождение между $client а также $ajaxClient объекты. В одном из элементов был нулевой ресурс, что привело к ошибкам, показанным выше.

С этими проблемами, сдерживающими меня, я решил бросить ajaxTumblr.php и URL в точке вызова AJAX tumblr.php (т.е. сам) и добавил некоторую логику вверху, чтобы определить, является ли это $_POST запрос.

В результате $client объект идентичен, и мне удалось получить приложение для публикации в моем блоге Tumblr.

Вот фрагмент кода, который я добавил в tumblr.php

if (isset($_POST['blogTitle'])){
$token = $_SESSION['token'] ;
$secret = $_SESSION['secret'] ;
$client = new Tumblr\API\Client($consumerKey, $consumerSecret, $token, $secret);

$blogName = $_POST['blogName'];
$blogTitle = $_POST['blogTitle'];
$blogBody = $_POST['blogBody'];
<snip>
$postData = array('title' => $blogTitle, 'body' => $blogBody, 'format' => $format, 'state' => $state );
$res = $client->createPost($blogName, $postData);

exit;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]