26

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

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

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

请问你有解决办法吗?

4

7 回答 7

53

您还可以通过调用这种 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

于 2015-04-17T12:44:08.607 回答
35

用户的个人资料图片

好的,所以您需要用户的个人资料图片。您将需要查看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 发出请求的方式。

我写了一篇堆栈溢出帖子,目的是帮助大家毫不费力地向 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;

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

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

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

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

于 2013-06-14T14:32:15.827 回答
1

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

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

于 2013-06-12T18:08:34.730 回答
0

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

  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翻译应该很简单。

于 2014-11-13T16:35:07.177 回答
0

我尝试上述方法来获取配置文件 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

例如:

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

当然,您应该使用您的 Bearer Token 请求它才能正常工作。为此,我推荐一个名为postman的平台。它确实有助于调用 API。

上面的示例代码返回 JSON,如下所示:

{
"data": {
    "name": "Twitter Dev",
    "profile_image_url": "https://pbs.twimg.com/profile_images/1445764922474827784/W2zEPN7U_normal.jpg",
    "username": "TwitterDev",
    "id": "2244994945"
}

}

额外的:

如果您希望配置文件图像的尺寸更大。然后,您可以在 URL 中将 size 替换为normal有关更多详细信息,请阅读此

像这样:

https://pbs.twimg.com/profile_images/1445764922474827784/W2zEPN7U_400x400.jpg

投票帮助更多的开发者。

于 2022-01-22T09:11:32.100 回答
-1

试试这个

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
于 2013-02-12T16:23:56.817 回答
-2

Hare 是一种获取 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 等。

于 2016-01-05T09:49:34.073 回答