1

我只是新手和学习,所以感谢您提供的任何建议:) 我正在制作一个非常简单的工具来从学校项目的 Twitter API 1.1 GET 请求中检索特定数据。我正在使用 J7mbo 的TwitterAPIExchange.php和格式。我创建了一个 HTML 表单来将数据传递给数组,并且可以毫无问题地将请求 POST 到 API。当我将变量输入 PHP 中的 $getfield 时,我还可以成功地将特定数据从 GET 请求打印到 API,但是当我尝试使用表单为 GET 请求发送数据时,出现以下错误:

注意:未定义的偏移量:1 在 /var/www/exp/TwitterAPIExchange.php 第 158 行

警告:在第 31 行的 /var/www/exp/screen1.php 中为 foreach() 提供的参数无效

这是代码:

    ini_set('display_errors', 1); 
    if(!empty($_GET ['screen_name'])) {
    require_once('TwitterAPIExchange.php');


    $settings = array(
    'oauth_access_token' => "MY_KEY_HERE",
    'oauth_access_token_secret' => "MY_KEY_HERE",
    'consumer_key' => "MY_KEY_HERE",
    'consumer_secret' => "MY_KEY_HERE",
    );

    /** URL for REST request, see: https://dev.twitter.com/docs/api/1.1/ **/
    $url = 'https://api.twitter.com/1.1/friends/list.json';
    $getfield = $_GET['screen_name'];
    $requestMethod = 'GET';

    /** Note: Set the GET field BEFORE calling buildOauth(); **/
    $twitter = new TwitterAPIExchange($settings);
    $response = $twitter->setGetfield($getfield)
                ->buildOauth($url, $requestMethod)
                ->performRequest();

    ##This prints out the fields I am interested in##

    $arrResults = json_decode($response,true);

    foreach ($arrResults['users'] as $arrSearchResult) {
$strTweet = $arrSearchResult['created_at'] ;
$strTweet1 = $arrSearchResult['screen_name'] ;
    print_r("<div class='tweet'>$strTweet $strTweet1</div>");
}       
    }

    ?>
    <h3>Enter the name here</h3>
    <form action="" method="GET">
    <input type="text" name="screen_name" /><br />
    <input type="submit" />
    </form>

所以,我认为该请求在 OAuth 之前格式错误,因为即使我在 OAuth 数组中没有访问密钥,我也会遇到相同的错误。

在对 API 的 POST 请求中,表单数据直接传递到 API 调用数组中,但是 GET 请求的构建方式不同,我没有看到如何将表单数据传递给它。这将正常工作:

    $getfield = '?screen_name=TWITTER_SCREEN_NAME';

当我尝试 $getfield = $_GET['screen_name']; 它出错了。感谢您的宝贵时间,如果这个菜鸟的东西很烦人,对不起:3

4

1 回答 1

1

如果$getfield = '?screen_name=TWITTER_SCREEN_NAME';在没有表单数据的情况下工作,那么您只需要更改行

$getfield = $_GET['screen_name'];

$getfield = "?screen_name=".$_GET['screen_name'];

假设您只是通过@handle表单中的通道

此外,(这与您的问题无关)该行if(!empty($_GET ['screen_na...不应在$_GET和之间有空格[

于 2013-07-25T14:22:35.043 回答