繁体   English   中英

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

[英]How to get user image with Twitter API 1.1?

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

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

但是,它在API 1.1 中不再起作用。

请问你有解决办法吗?

用户的个人资料图片

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

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

我写了一个堆栈溢出帖子 ,旨在帮助你们所有人对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;

这就是它! 很简单。 还有用户/查找有效地做同样的事情,但你可以:

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

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

我希望清理一下!

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

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

尝试这个

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

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

  1. Twitter API v1.0已弃用
  2. Twitter API v1.1需要OAuth
  3. OP(@Steffi)不想进行身份验证

挑选任何两个; 所有这三个都是不行的。 @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翻译应该很简单。

我尝试上述方法来获取配置文件 URL,但它对我不起作用。 我认为是因为 Twitter 将 API v1.1 更改为 API v2.0。

我找到了一种获取个人资料 URL 的简单方法。

我在那里使用 Twitter API v2 User Lookup -> User by Username API 部分

代码示例:

https://api.twitter.com/2/users/by/username/{user_name}?user.fields=profile_image_url

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

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

这是我的个人资料picutre:Big: 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等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM