【问题标题】:Passing a GET value from HTML form to Twitter API 1.1 PHP将 GET 值从 HTML 表单传递到 Twitter API 1.1 PHP
【发布时间】:2013-07-25 11:51:20
【问题描述】:

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

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

警告:在第 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

【问题讨论】:

    标签: php forms get twitter


    【解决方案1】:

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

    $getfield = $_GET['screen_name'];
    

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

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

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

    【讨论】:

    • 啊,我在想 $_GET 已经通过了,但事实并非如此。谢谢,这修复了 Undefined Offest 错误。我仍然得到这个:警告:在第 31 行的 /var/www/exp/screen1.php 中为 foreach() 提供的参数无效
    • 如果你在foreach循环之前print_r($arrResults);,它是打印数组还是空白?
    • 是的,它有效! :))) 我回到之前的保存并添加了 $getfield = "?screen_name=".$_GET['screen_name'];现在它可以正确打印并且完全没有错误!正如您提到的,我还删除了 $_GET 之间的空格,这是一个错误,呵呵。我非常感谢你,我喜欢学习 PHP 有时我觉得我尝试过快了哈哈,但是非常感谢你 :)
    猜你喜欢
    • 2011-07-14
    • 1970-01-01
    • 2015-08-31
    • 2014-10-30
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    相关资源
    最近更新 更多