Twitter API无法托管[在localhost上正常工作]

时间:2015-03-16 19:23:35

标签: 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;

$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服务器(PHP V5.5.12),我的代码工作正常。但是当我在一些免费托管网站(我尝试过hostinger.in和000webhost.com)上托管我的应用程序时,这个脚本会失败,只打印'null'。

请帮我解决这个问题。

提前致谢。

3 个答案:

答案 0 :(得分:5)

我曾尝试使用hostinger和000webhost以及其他几个。他们不工作的原因是连接到twitter的库使用php curl,许多免费托管已禁用curl,或传出连接或twitter拒绝curl连接,当它来自免费托管服务器的ips。对于我在互联网上看到的内容,可能是因为许多黑客一直在搞乱Twitter和托管免费托管帐户。所以找到一个与Twitter API一起使用的免费主机,这是一个挑战,我已经尝试了20多个他们不工作,其中一些自动删除帐户或文件或阻止ftp访问,如果你试图卷曲到Twitter < / p>

答案 1 :(得分:2)

可能与您可用的库有关。

error_reporting(E_ALL)添加到脚本的顶部。

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

答案 2 :(得分:0)

您的TwitterOAuth版本是什么?您的代码似乎是如此遗留,并且与最新版本不兼容。

<?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>';
}

或者,您可以使用TwistOAuth代替TwitterOAuth。我是这个图书馆的作者。该库几乎与TwitterOAuth兼容,但支持严格的异常处理。 错误原因始终要清楚。

<?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();

}

您喜欢哪种代码?