web-dev-qa-db-ja.com

Twitter API 1.1でユーザー画像を取得する方法は?

API 1.0では、users/profile_image/:screen_name

例えば ​​: http://api.Twitter.com/1/users/profile_image/EA_FIFA_FRANCE

しかし、API 1.1。ではもう機能しません

解決策はありますか?

24
Steffi

ユーザーのプロフィール画像

さて、ユーザーのプロフィール画像が必要です。 Twitter REST API 1.1 docs をご覧ください。これは、APIに対して行うことができるすべての異なるリクエストのリストです(心配しないで、how実際にこれを後で実行します).

ユーザーのプロフィール画像を取得する方法は複数ありますが、最も注目すべき方法は sers/show です。このドキュメントによると、users/showメソッドは次のとおりです。

必須のuser_idまたはscreen_nameパラメーターで指定されたユーザーに関するさまざまな情報を返します。可能な場合、著者の最新のツイートがインラインで返されます。

まあ、ユーザープロフィール画像はどこかにあるはずですよね?

Users/show urlを使用して、この情報の要求に対する典型的な応答を見てみましょう(例としてプロファイルを使用します)。

Example response for users/show from the Twitter 1.1 api

多くのデータが通過するため、下から一部を切り取りました。最も重要なことは、必要なものが表示されることです。

profile_image_url key

これは、アクセスする必要があるprofile_image_urlキーです。

それで、あなたはこれをどのように行うのですか?実際には非常に簡単です。

認証されたリクエスト

あなたが正しく指摘したように、2013年6月11日の時点で、認証されていないリクエスト、または1.0 APIへのリクエストは廃止されました。したがって、OAuthは1.1 APIにリクエストを行う方法です。

私はスタックオーバーフローポストを書きました。努力。

使用すると、上記の応答が返されます。投稿の指示に従って、ステップバイステップでライブラリを取得できます here (プロジェクトに含めるファイルは1つだけです)。

基本的に、以前の投稿では、次のことを行う必要があると説明しています。

  • Twitter開発者アカウントを作成する
  • Twitterから一意のキーのセットを取得します(合計4つのキー)。
  • アプリケーションに読み取り/書き込みアクセス権を設定します
  • TwitterApiExchange.php(ライブラリ)を含める
  • キーを$settings配列に入れます
  • ドキュメントからURLとリクエスト方法(Post/Get)を選択します(上記のリンクを配置します!)
  • リクエストしてください、それだけです!

実用的な例

上記の投稿(きれいなカラー写真を含む)のステップバイステップの手順に従ったと仮定します。必要なものを取得するために使用するコードを次に示します。

// Require the library file, obviously
require_once('TwitterAPIExchange.php');

// Set up your settings with the keys you get from the dev site
$settings = array(
    'oauth_access_token' => "YOUR_ACCESS_TOKEN",
    'oauth_access_token_secret' => "YOUR_ACCESS_TOKEN_SECRET",
    'consumer_key' => "YOUR_CONSUMER_KEY",
    'consumer_secret' => "YOUR_CONSUMER_SECRET"
);

// Chooose the url you want from the docs, this is the users/show
$url = 'https://api.Twitter.com/1.1/users/show.json';
// The request method, according to the docs, is GET, not POST
$requestMethod = 'GET';

// Set up your get string, we're using my screen name here
$getfield = '?screen_name=j7mbo';

// Create the object
$Twitter = new TwitterAPIExchange($settings);

// Make the request and get the response into the $json variable
$json =  $Twitter->setGetfield($getfield)
                 ->buildOauth($url, $requestMethod)
                 ->performRequest();

// It's json, so decode it into an array
$result = json_decode($json);

// Access the profile_image_url element in the array
echo $result->profile_image_url;

それはほとんどそれです!とても簡単です。 sers/lookup もあり、これは事実上同じことを行いますが、次のことができます。

User_idおよび/またはscreen_nameパラメーターに渡されるコンマ区切り値で指定された、要求ごとに最大100ユーザーの完全に水和されたユーザーオブジェクトを返します。

複数のユーザーの詳細を取得する必要がある場合は、それを使用しますが、1人のユーザーの詳細のみが必要な場合は、上記のusers/showを使用します。

私はそれが少し物事をクリアしたことを願っています!

34
Jimbo

この種類のURLを呼び出すことで、Twitterプロフィール画像を取得することもできます。

https://Twitter.com/ [screen_name]/profile_image?size = original

例えば: https://Twitter.com/VancityReynolds/profile_image?size=original

この投稿から情報を得た:

https://twittercommunity.com/t/how-to-get-user-image-original-size-with-api-1-1/10187/14

53
Simon Briche

Twitter API 1.1を使用したいが、リクエストを認証したくないと言います。 認証されていないリクエストはAPI v1.1ではサポートされていません。したがって、APIの変更に適応してください。アップデートを見る:

profile_image_urlリクエストのhttps://api.Twitter.com/1.1/users/show.jsonフィールドから画像を取得できます。このメソッドにはidまたはscreen_nameのいずれかが必要です。例えば ​​:

GET    https://api.Twitter.com/1.1/users/show.json?screen_name=rsarver

詳細はこちらをご覧ください https://dev.Twitter.com/docs/api/1.1/get/users/show

1
user568109

前の回答とコメントが指摘しているように:

  1. Twitter API v1.0は非推奨です
  2. Twitter API v1.1にはOAuthが必要です
  3. OP(@Steffi)は認証を望まない

任意の2つを選択します。 3つすべてを使用することはできません。 @Jimboの答えは正しい(そしてそれを行う適切な方法)が、#3は除外します。 #1を捨てることは、時間をさかのぼることを意味します。しかし、#2を捨てて、ソースに直接移動できます。

curl -s https://Twitter.com/EA_FIFA_FRANCE |
  sed -ne 's/^.*ProfileAvatar-image.*\(https:[^"]*\).*$/\1/p'

sedコマンドは、「ProfileAvatar-image」を含む行を見つけ、引用されたURLのように見える部分文字列を出力します。

TwitterはいつでもHTMLを変更する可能性があるため、認証されたAPI呼び出しよりも安定性は劣りますが、OAuthを扱うよりも簡単であり、公式のレート制限はありません!

[〜#〜] php [〜#〜] の翻訳は簡単なはずです。

0
chbrown

これを試して

http://api.Twitter.com/1/users/profile_image/{Twitter_account}.xml?size=bigger

API 1.1では、アプリケーションを接続し、次の方法でユーザーを取得することが唯一の方法です。

https://dev.Twitter.com/docs/api/1.1/get/users/show

そして彼の写真の後に検索

profile_image_url
0
Osin Toumani