如何使用Twitter API 1.1获取用户图像?

时间:2013-02-12 16:20:22

标签: php twitter

在API 1.0中,我们可以使用users/profile_image/:screen_name

例如:http://api.twitter.com/1/users/profile_image/EA_FIFA_FRANCE

但是,它在 API 1.1中不再有效。

请问您有解决方案吗?

6 个答案:

答案 0 :(得分:53)

答案 1 :(得分:34)

用户的个人资料图片

好的,所以你想要一个用户的个人资料图片。你需要看一下twitter REST API 1.1 docs。这是您可以对其API发出的所有不同请求的列表(不用担心,我将在稍后的 中实际执行此操作)。

有多种方法可以获取用户的个人资料图片,但最值得注意的是:users/show。根据这方面的文档,用户/ 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发出请求的方式。

我写了一篇 stack overflow post ,目的是帮助所有人尽快向1.1 API提出经过身份验证的请求。

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

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

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

一个实际例子

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

// 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有效地做同样的事情,但你可以:

  

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

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

我希望稍微清理一下!

答案 2 :(得分:1)

您说您想使用Twitter API 1.1,但您不想验证您的请求。 API v1.1不支持未经身份验证的请求。因此请调整API更改。查看更新:

您可以从profile_image_url请求的https://api.twitter.com/1.1/users/show.json字段获取图片。此方法需要idscreen_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

答案 3 :(得分:0)

试试这个

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

答案 4 :(得分:0)

正如之前的回答和评论所指出的那样:

  1. Twitter API v1.0已弃用
  2. Twitter API v1.1需要OAuth
  3. OP(@Steffi)不想进行身份验证
  4. 挑选任何两个;这三个人都是禁区。 @ Jimbo的答案是正确的(以及正确的方法),但不包括#3。抛出#1意味着回到过去。但是,我们可以抛出#2,直接转到源:

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

    sed命令只是说,找到包含" ProfileAvatar-image"并打印看起来像带引号的URL的子字符串。

    这比经过身份验证的API调用更不稳定,因为Twitter可能随时更改其HTML,但它比处理OAuth更容易,而且没有官方的速率限制!

    PHP翻译应该很简单。

答案 5 :(得分:-2)

野兔是获取Twitter个人资料图片的一种非常简单的方法。

http://res.cloudinary.com/demo/image/twitter_name/w_300/ {的User_Name} .JPG

这是我的个人资料照片: 大:http://res.cloudinary.com/demo/image/twitter_name/w_300/avto_key.jpg

小:http://res.cloudinary.com/demo/image/twitter_name/w_100/avto_key.jpg

你可以通过URL的这一部分调整大小 - w_100,w_200,w_500等。