1

私は新しくて学習中なので、アドバイスをいただければ幸いです:)学校のプロジェクトのTwitter API 1.1 GETリクエストから特定のデータを取得するための非常にシンプルなツールを作成しています。私は J7mbo のTwitterAPIExchange.phpとフォーマットを使用しています。データを配列に渡す HTML フォームを作成し、問題なく API にリクエストを POST できます。PHP の $getfield に変数を入力すると、GET リクエストから API に特定のデータを正常に出力することもできますが、フォームを使用して GET リクエストのデータを送信しようとすると、次のエラーが発生します。

Notice: Undefined offset: 1 in /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']; を試したときです。それがうまくいかないこと。お時間をいただき、ありがとうございます。

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 に答える