Php 如何通过ajax传递Tumblr类对象

Php 如何通过ajax传递Tumblr类对象,php,ajax,tumblr,Php,Ajax,Tumblr,如何在另一个名为via-ajax的php文件中引用在一个php文件中创建的类对象 我有一个项目,它使用Tumblr的API在博客上发表文章 有两个文件:tumblr.php和ajaxTumblr.php 在tumblr.php中,创建了一个tumblr对象: include_once ("Tumblr/API/Client.php"); include_once ("Tumblr/API/RequestException.php"); include_once ("Tumblr/API/Requ

如何在另一个名为via-ajax的php文件中引用在一个php文件中创建的类对象

我有一个项目,它使用Tumblr的API在博客上发表文章

有两个文件: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\u secret。我省略了这个代码,因为它可能不相关

现在用户被验证了,我可以做一些事情,比如显示用户的信息

$info=$client->getUserInfo

甚至可以用一些预设的数据发布帖子

$postData = array('title' => $title, 'body' => $body, 'format' => $format);
$client->createPost($userid, $postData);
到目前为止,一切顺利

现在,我通过textareas从用户标题和博客文本中收集数据,并使用此信息向ajaxTumblr.php发送一个ajax请求

        $.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);
            } 
        });
这就是我被困的地方

我们如何在ajax php文件中传递、引用或重新创建$client?我无法生成新的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:

$\u会话['client']=序列化$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

在Tumblr应用程序设置中,它会询问您默认的回调URL。这设置为tumblr.php,因此应用程序可以执行身份验证活动

当ajaxTumblr.php尝试执行API调用时,问题似乎出现了。回调不等于调用模块

此外,$client和$ajaxClient对象之间存在细微差异。其中一个元素中存在空资源,导致上面显示的错误

由于这些问题阻碍了我,我决定放弃ajaxTumblr.php,将ajax调用中的URL指向tumblr.php,即tumblr.php本身,并在顶部添加了一些逻辑来检测这是否是一个$u 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;
}