0

Twitter アカウントを持っているかどうかを確認したい Web サイトのリストがあります。APIでユーザー名のURL検索があるかどうか、またはこの性質のものがあるかどうか、私は興味がありました。私は読んで周りを見回してきました。しかし、私は不足しています。関数を実行して作業を行うことができる場合、これを手動で行う必要はありません。このトピックに関するフィードバックをいただければ幸いです。

良い一日!

4

2 に答える 2

5

上記のコメントで説明したように、twitter API のバージョン 1 は非推奨であり、まもなく完全に削除されます。これは、単純なリクエストが削除されると機能しなくなることを意味します。

基本的に、それ以降、Twitter から何らかのデータを取得するには、バージョン1.1 APIを使用して認証済みのリクエストを行う必要があります。

PHP を使用してバージョン 1.1 API を呼び出すために必要な正確な手順を、必要な人のためにきれいな写真で説明する投稿をここに書きました。

上記の投稿を完全に読んだ後、あなたがしたいことは次のとおりです。

  1. twitter dev サイトでアプリケーションをセットアップします。これは単純に、あなたと Twitter の両方が互いの間にキーのセットを持っているためです (合計で 4 つのキーがあります。これについては私の投稿で説明しています)。
  2. PHP スクリプトを含めます。ここでも、すべてが私の投稿と github にあります。
  3. それ以降は、変数のユーザー名を PHP に渡し、その変数を使用して、v1.1 API を使用してそれらが存在するかどうかを確認します。

PHP を少し知っていることを前提としています。これは、Twitter v1.1 APIを使用して、ユーザー名が存在するかどうかを確認する方法です。

ユーザーのタイムラインを取得するためのドキュメントをご覧ください。ドキュメントには、 screen_name パラメータを使用できると記載されています。また、 GET リクエストが必要であることもわかっています。


上記の情報と私のクラスがあれば、ユーザーのリクエストを非常に簡単に実行できます。

require_once "TwitterAPIExchange.php";

// As my post explains, these are the keys you get from the twitter dev site
$settings = array(
    'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN",
    'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET",
    'consumer_key' => "YOUR_CONSUMER_KEY",
    'consumer_secret' => "YOUR_CONSUMER_SECRET"
);

// This is the username you want to check. You can get it however you want. Just place it into this $username variable.
$username = 'USERNAMEHERE';

$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
$requestMethod = 'GET';
$getfield = '?screen_name='.$username;

$twitter = new TwitterAPIExchange($settings);
$result = $twitter->setGetfield($getfield)
                  ->buildOauth($url, $requestMethod)
                  ->performRequest();

これで、結果が$result変数に格納されました。ここでやりたいことができます。ユーザーが存在するかどうかを確認したいのでvar_dump()、結果を見て、ユーザーが存在するかどうかを調べる方法を探します。明らかに、実際のユーザーは含まれません。falseまたはが含まれる場合がありますnull

頭の中でわからないので、$result->userが に等しいとしましょうfalse。あなたは単にこれを行うでしょう:

if (!$result->user)
{
    echo "The user doesn't exist!";
}
else
{
    echo "The user exists!";
}

... または、省略形 (このような小さなことを投稿に追加するのが好きです)

echo (!$result->user) ? "Doesn't exist! :(" : "Exists!";

以下を使用して、少し調査を行います。

于 2013-05-25T12:44:22.507 に答える
0

上記で説明したJimboの非常に便利な PHP クラスに基づいて、ユーザーが存在するかどうかを確認するコードを次に示します。

まず、json_decode を使用$resultして PHP 配列に変換します。true結果の配列でオブジェクトを取得しないように、2 番目のパラメーターを に設定してください。

$result = json_decode($result, true);

ここで、screen_name配列キーが存在するかどうかを確認する必要がありますが、array_key_exists は多次元配列を再帰的に調べません。したがって、ここにある新しい関数が必要になります。

function array_key_exists_r($needle, $haystack) {
    $result = array_key_exists($needle, $haystack);

    if ($result) return $result;

    foreach ($haystack as $v) {
        if (is_array($v)) {
             $result = array_key_exists_r($needle, $v);
        }
        if ($result) return $result;
    }

    return $result;
}

以下は、すべてを機能させる最後のコードです。$result配列内で指している場所に注意してください。Twitter API は $username で指定されたユーザーのタイムラインを返すため、基本的には最初のツイートを投稿したユーザーの screen_name を見ています。

$result = json_decode($result, true);

if ( array_key_exists_r('screen_name', $result ) ) {
    if ( $result[0]['user']['screen_name'] == $username ) {
        // The username exists
    }
} else {
    // The username doesn't exist
}

ユーザー名が存在するかどうかを確認するより良い方法があるかどうかはわかりません。代わりにエラーコードのチェックを使用してください。

于 2013-12-17T09:29:04.507 に答える