如何使用 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 中不再起作用。

请问你有解决办法吗?

原文由 Steffi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 465
2 个回答

用户的个人资料图片

好的,所以您需要用户的个人资料图片。您将需要查看 Twitter REST API 1.1 文档。这是您可以对他们的 API 发出的所有不同请求的列表(别担心,我稍后会 介绍 您如何实际执行此操作)。

有多种方法可以获取用户的个人资料图像,但最值得注意的一种是: users/show 。根据此文档, users/show 方法:

返回有关由所需的 user_id 或 screen_name 参数指定的用户的各种信息。作者的最新推文将尽可能内联返回。

好吧,用户个人资料图片一定在某处,对吗?

让我们看一下对此信息请求的典型响应,使用 users/show url(我们将使用我的个人资料作为示例)。

来自 twitter 1.1 api 的用户/节目的示例响应

我从底部切掉了一些,因为有 很多 数据要经过。最重要的是,您会看到您需要什么:

profile_image_url 键

这是您需要访问的 profile_image_url 密钥。

那么,你是怎么做到的呢?其实很简单。

经过身份验证的请求

正如您正确指出的那样,自 2013 年 6 月 11 日起,您不能再向 1.0 API 发出未经身份验证的请求或任何请求,因为它已被淘汰。所以 OAuth 是向 1.1 API 发出请求的方式。

我写了一篇 stack overflow 的帖子,目的是帮助你们所有人毫不费力地向 1.1 API 发出经过身份验证的请求。

当你使用它时,你会得到上面看到的响应。按照帖子说明,一步一步,你可以在 这里 得到库(你只需要在你的项目中包含一个文件)。

基本上,上一篇文章解释了您需要执行以下操作:

  • 创建一个 Twitter 开发者帐户
  • 从 twitter 获取一组独特的密钥(总共 4 个密钥)。
  • 将您的应用程序设置为具有读/写访问权限
  • 包含 TwitterApiExchange.php(库)
  • 把你的钥匙放在 $settings 阵列
  • 从文档中选择您的 URL 和请求方法(发布/获取)(我把链接放在上面!)
  • 提出要求,就是这样!

一个实际例子

我假设您已按照上述帖子中的分步说明进行操作(包含漂亮的彩色图片)。这是您用来获取所需内容的代码。

 // 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;

差不多就是这样!很简单的。还有 users/lookup 可以有效地做同样的事情,但你可以:

根据传递给 user_id 和/或 screen_name 参数的逗号分隔值指定,为每个请求返回最多 100 个用户的完全水合用户对象。

如果您需要获取多个用户的详细信息,请使用它,但由于您只需要一个用户的详细信息,请使用 users/show 如上所述。

我希望能把事情搞清楚一点!

原文由 Jimbo 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏