【问题标题】:Getting blank page using cURL twitter使用 cURL twitter 获取空白页面
【发布时间】:2013-07-08 08:56:40
【问题描述】:

我正在尝试使用带有 Codeigniter 框架的 PHP 添加一个 Twitter 帐户。
我得到一个空白页,即使在我的日志中也没有错误。不记名令牌是可以的,我直接在代码中添加了它进行测试。

我做错了什么?任何帮助表示赞赏。谢谢

控制器:manage.php

   if($_POST['platform'] == 'twitter'):

  $request = curl_init();
    $bearer = "AAAAAAAAAAAAAAAAAAAAAJ%xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 
    curl_setopt($request, CURLOPT_SSLVERSION, 3);
    curl_setopt($request, CURLOPT_URL, 'https://api.twitter.com/1.1/application/rate_limit_status.json');
    curl_setopt($request, CURLOPT_HTTPHEADER, array('Authorization: Bearer '.$bearer));
    curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
    $result = json_decode($content = curl_exec($request));
    curl_close($request);
    return($result);

    if($request == 0):
       $error = 'Sorry, rate limited';
    else:

        $account_data = @file_get_contents('http://api.twitter.com/1.1/users/show.json?screen_name='.$_POST['account_id'].'&include_entities=true');
        $account_data = json_decode($account_data);

    endif;

    if($account_data != false):
        $new_account = array(
            'id' => $account_data->screen_name,
            'username' => $account_data->screen_name,
            'name' => $account_data->name,
            'link' => 'https://twitter.com/'.$account_data->screen_name,
            'picture' => $account_data->profile_image_url,
            'platform' => 'twitter'
        );
    else:
        $error = "Account Not Found";
    endif;

视图:add.php

   <?php

   if(isset($error)) echo "<p>".$error."</p>";

echo '<form action="/manage/add" method="post" accept-charset="utf-8" style="margin-left:-15px; margin-top:-15px;">';

echo form_error('account_id');
echo '<strong>'.form_label('Account ID', 'account_id');
echo form_input('account_id', set_value('account_id', ''),'style="width: 288px;"');

    echo form_label('Platform', 'platform');
    echo form_dropdown('platform', $platforms, set_value('platform', $this->input->post('platform')));

$data = array('name' => 'submit', 'value' => 'Add Account', 'class' => 'submit');
echo form_submit($data);
  ?>

   <?php echo form_close(); ?>

当我将它设置为 CURLOPT_RETURNTRANSFER 时,我得到了 false。

{"rate_limit_context":{"application":"N3KVVzpE8d0qapC6kJJSw"},"resources":{"lists":{"/lists/subscribers":{"limit":15,"remaining":15,"reset ":1373460189},"/lists/list":{"limit":15,"remaining":15,"reset":1373460189},"/lists/memberships":{"limit":15,"remaining": 15,"reset":1373460189},"/lists/ownerships":{"limit":15,"remaining":15,"reset":1373460189},"/lists/subscriptions":{"limit":15, "remaining":15,"reset":1373460189},"/lists/members":{"limit":15,"remaining":15,"reset":1373460189},"/lists/subscribers/show":{ "limit":15,"remaining":15,"reset":1373460189},"/lists/statuses":{"limit":180,"remaining":180,"reset":1373460189},"/lists/ show":{"limit":15,"remaining":15,"reset":1373460189},"/lists/members/show":{"limit":15,"remaining":15,"reset":1373460189 }},"application":{"/application/rate_limit_status":{"limit":180,"remaining":169,"reset":1373459343}},"friendships":{"/friendships/show":{" limit":15,"remaining":15,"reset":1373460189}},"users":{"/users/profile_banner":{"limit":180,"remaining":180," reset":1373460189},"/users/suggestions/:slug/members":{"limit":15,"remaining":15,"reset":1373460189},"/users/show/:id":{" limit":180,"remaining":180,"reset":1373460189},"/users/suggestions":{"limit":15,"remaining":15,"reset":1373460189},"/users/lookup ":{"limit":60,"remaining":60,"reset":1373460189},"/users/suggestions/:slug":{"limit":15,"remaining":15,"reset":1373460189 }},"followers":{"/followers/list":{"limit":30,"remaining":30,"reset":1373460189},"/followers/ids":{"limit":15,"剩余":15,"reset":1373460189}},"statuses":{"/statuses/show/:id":{"limit":180,"remaining":180,"reset":1373460189},"/ statuses/oembed":{"limit":180,"remaining":180,"reset":1373460189},"/statuses/retweeters/ids":{"limit":60,"remaining":60,"reset" :1373460189},"/statuses/user_timeline":{"limit":300,"remaining":300,"reset":1373460189},"/statuses/retweets/:id":{"limit":60,"remaining ":60,"reset":1373460189}},"help":{"/help/privacy":{"limit":15,"remaining":15,"reset":1373460189},"/help/tos" :{"限制":15,"剩余":15," reset":1373460189},"/help/configuration":{"limit":15,"remaining":15,"reset":1373460189},"/help/languages":{"limit":15,"remaining" :15,"reset":1373460189}},"friends":{"/friends/ids":{"limit":15,"remaining":15,"reset":1373460189},"/friends/list": {"limit":30,"remaining":30,"reset":1373460189}},"favorites":{"/favorites/list":{"limit":15,"remaining":15,"reset": 1373460189}},"search":{"/search/tweets":{"limit":450,"remaining":450,"reset":1373460189}},"trends":{"/trends/available":{ "limit":15,"remaining":15,"reset":1373460189},"/trends/place":{"limit":15,"remaining":15,"reset":1373460189},"/trends/最接近":{"limit":15,"remaining":15,"reset":1373460189}}}}

【问题讨论】:

  • 设置CURLOPT_HEADER =&gt; false,并向我们展示您收到的信息。
  • 我在您的帖子中没有看到任何新内容。
  • 在上面查看我的 CURLOPT_HEADER => false 结果。
  • 看看this library。您将能够在此处看到标头是如何正确生成的。还不如只使用一个文件包含,使用起来真的很简单。

标签: php codeigniter curl twitter


【解决方案1】:

您的 Authorization 标头看起来有误。要执行此类请求,您需要生成签名。更多信息请关注Twitter development site

我编写了一个 CodeIgniter 库,用于向 Twitter 发出 cURL 请求。您可能想要使用它,或者只是从中获取一些代码。仓库是here

【讨论】:

  • 我已经生成了一个签名。我需要获取不记名令牌,因为我正在使用仅限应用程序的身份验证。我的仪表板有 312 个用户,我需要代表我的用户使用此方法。我能够进行身份验证并获得持有者令牌,现在我正在尝试添加新用户。
  • 如果您想添加用户,我认为您将 cURL 请求发送到错误的 URL
  • 实际上它正在获得正确的用户。让我添加 add.php 页面表单,以便您查看。
  • 我改变了 '$account_data = @file_get_contents('api.twitter.com/1.1/users/…); $account_data = json_decode($account_data);'。我进入我的日志文件。 file_get_contents(api.twitter.com/1/users/…):打开流失败:HTTP 请求失败! HTTP/1.0 410 消失 /Users/.../Sites/application/controllers/manage.php 106
【解决方案2】:

我已经解决了这个问题。

  $request = curl_init();
    $bearer = "AAAAAAAAAAAAAAAAAAAAAJ%2xxxxxxxxxxxxxxx0x0x0x0x0x0x0x0x0x0xxxxxx"; 
    curl_setopt($request, CURLOPT_SSLVERSION, 3);
    curl_setopt($request, CURLOPT_URL, 'https://api.twitter.com/1.1/users/show.json?screen_name='.$account_id.'&include_entities=true');
    curl_setopt($request, CURLOPT_HTTPHEADER, array('Authorization: Bearer '.$bearer));
    curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
    $account_data = json_decode($file_get_contents = curl_exec($request)); 
    curl_close($request);

【讨论】:

    猜你喜欢
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 2019-08-24
    • 2014-01-31
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多