Php Twitter API在主机上不起作用[在本地主机上工作正常]

Php Twitter API在主机上不起作用[在本地主机上工作正常],php,twitter,twitter-oauth,Php,Twitter,Twitter Oauth,我正在开发一个应用程序来显示在给定地理位置(纬度和经度)1英里半径范围内完成的推文。这是我的PHP代码 <?php // $lat = $_GET['lat']; $lat = 26.511740; // $long = $_GET['long']; $long = 80.234973; require_once("twitteroauth/twitteroauth.php"); //Path to twitteroauth library $notweets = 100; $co

我正在开发一个应用程序来显示在给定地理位置(纬度和经度)1英里半径范围内完成的推文。这是我的PHP代码

<?php
// $lat = $_GET['lat'];
$lat = 26.511740;

// $long = $_GET['long'];
$long = 80.234973;

require_once("twitteroauth/twitteroauth.php"); //Path to twitteroauth library

$notweets = 100;

$consumerkey = "XXXX";
$consumersecret = "XXXX";
$accesstoken = "XXXX-XXXX";
$accesstokensecret = "XXXX"; 

function getConnectionWithAccessToken($cons_key, $cons_secret, $oauth_token, $oauth_token_secret) {
  $connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_token_secret);
  return $connection;
} 

$connection = getConnectionWithAccessToken($consumerkey,$consumersecret, $accesstoken, $accesstokensecret);

$tweets = $connection->get("https://api.twitter.com/1.1/search/tweets.json?geocode=".$lat.",".$long.",5mi&result_type=recent&count=".$notweets);

// echo $tweets;
echo json_encode($tweets);
?>

我使用的是Wamp服务器(PHPV5.5.12),我的代码在上面运行良好。但是当我在一些免费的托管站点上托管我的应用程序时(我尝试了hostinger.in和000webhost.com),这个脚本失败,只打印“null”

请帮我解决这个问题


提前感谢。

可能与您可用的库有关

错误报告(E\u ALL)
添加到脚本顶部


检查cURL是否安装在廉价主机上,因为我相信这是twitteroauth唯一需要的php库。

我在hostinger和000webhost以及其他几个主机上都尝试过。它们不起作用的原因是连接到twitter的库使用了php curl,并且许多免费主机都禁用了curl,或者传出连接或twitter拒绝了来自免费主机服务器的IP的curl连接。就我在互联网上所读到的内容而言,这可能是因为许多黑客一直在搞乱twitter,并通过免费托管帐户进行托管。因此,用cpanel找到一个与Twitter API兼容的免费主机是一个挑战,我已经尝试了20多次,但都没有成功,如果你尝试使用Twitter,其中一些会自动删除帐户或文件,或者阻止ftp访问。你的TwitterOAuth版本是什么?您的代码似乎太旧,与最新版本不兼容

'; }捕获(特例$e){ 回显“错误:”。$e->getMessage(); }
您喜欢哪种代码?

只需将计数减少到10或20,然后再试一次。可能是因为连接速度。当我在托管网站上尝试这一功能时,它发生在我身上。它仍然不起作用。我猜这是因为托管站点阻止了一些php函数,而这个api正在使用其中的一个。哦,对不起,我没有看到
[在本地主机上工作正常]
标签。但是,
TwitterOAuth
将始终确保为您提供错误原因,而
TwitterOAuth
仅返回null。试试看。
<?php

require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;

$lat = 26.511740;
$long = 80.234973;
$notweets = 100;

$ck = "XXXX";
$cs = "XXXX";
$ot = "XXXX-XXXX";
$os = "XXXX"; 

$to = new TwitterOAuth($ck, $cs, $ot, $os);

$tweets = $to->get('search/tweets', [
    'geocode' => "$lat,$long",
    'result_type' => 'recent',
    'count' => $notweets,
]);

if (isset($tweets->errors[0]->message)) {
    echo 'Error: ' . $tweets->errors[0]->message;
} elseif (!is_array($tweets)) {
    echo 'Unknown Error';
} else {
    echo '<pre>';
    var_dump($tweets);
    echo '</pre>';
}
<?php

require 'TwistOAuth.phar'; // Or 'vendor/autoload.php' for composer

$lat = 26.511740;
$long = 80.234973;
$notweets = 100;

$ck = "XXXX";
$cs = "XXXX";
$ot = "XXXX-XXXX";
$os = "XXXX"; 

try {

    $to = new TwistOAuth($ck, $cs, $ot, $os);
    $tweets = $to->get('search/tweets', [
        'geocode' => "$lat,$long",
        'result_type' => 'recent',
        'count' => $notweets,
    ]);
    echo '<pre>';
    var_dump($tweets);
    echo '</pre>';

} catch (TwistException $e) {

    echo 'Error: ' . $e->getMessage();

}