users/profile_image/:screen_name
。例如:
http://api.twitter.com/1/users/profile_image/EA_FIFA_FRANCE
但在API 1.1中不再适用。请问您有解决方案吗?
好的,您想获得用户的个人资料图片。您需要查看Twitter REST API 1.1文档。这是您可以访问他们API的不同请求的列表(别担心,我会在稍后告诉您如何做到这一点)。
有多种方法可以获取用户的个人资料图片,但最显着的一个是:users/show。根据此文档,users/show方法:
返回有关通过必需的user_id或screen_name参数指定的用户的各种信息。如果可能,作者最新的推文将内联返回。
好吧,那么用户个人资料图片肯定就在其中某个地方了,对吧?
让我们来看一下使用users/show URL发出请求时,典型响应的情况(我们将使用我的个人资料作为示例)。
我从底部剪切了一些内容,因为有很多要经过的数据。最重要的是,您将看到所需内容:
这是您需要访问的profile_image_url关键字。
那么,如何做到这一点?实际上非常简单。
正如您所指出的那样,从2013年6月11日起,您无法进行未经身份验证的请求或任何1.0 API的请求,因为它已被淘汰。因此,OAuth是向1.1 API发出请求的方法。
我撰写了一篇Stack Overflow帖子,旨在帮助所有人轻松地向1.1 API进行身份验证请求。
使用它时,您将收到上面看到的响应。按照文章中的说明逐步操作,您可以在此处获取库(您只需要在项目中包含一个文件)。
基本上,先前的帖子解释了您需要执行以下操作:
$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,它实际上也可以做同样的事情,但你可以:
通过传递给user_id和/或screen_name参数的逗号分隔值指定每个请求最多可返回100个用户对象。
如果您需要获取多个用户的详细信息,请使用该方法,但由于您只需要一个用户的详细信息,请像上面那样使用users/show。
希望这能稍微解决一些问题!
profile_image_url
可以被缓存吗?也就是说,如果我想让用户的 Twitter 头像显示在我的应用程序客户端上,应该让应用程序客户端进行 GET
请求,还是应该由服务器后端执行并将图像 URL 传递给应用程序? - Kar我尝试了上述方法来获取个人资料链接,但对我无效。我认为这是因为Twitter从API v1.1更改为API v2.0。
我找到了一个简单的方法来获取个人资料链接。
我使用Twitter API v2中的用户查找 -> 按用户名查找用户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
{
"data": {
"name": "Twitter Dev",
"profile_image_url": "https://pbs.twimg.com/profile_images/1445764922474827784/W2zEPN7U_normal.jpg",
"username": "TwitterDev",
"id": "2244994945"
}
}
补充:
如果您想要更高的个人资料图片尺寸,则可以将URL中的normal替换为尺寸。 更多详情请阅读此文
像这样:
https://pbs.twimg.com/profile_images/1445764922474827784/W2zEPN7U_400x400.jpg
投一票,帮助更多开发者。
https://api.twitter.com/1.1/users/show.json
发送请求,从 profile_image_url
字段获取图像。此方法需要提供 id
或 screen_name
参数之一。例如:GET https://api.twitter.com/1.1/users/show.json?screen_name=rsarver
正如之前的回答和评论所指出的:
选择其中两个;三个都不行。@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 的翻译应该很简单。
试一下这个
http://api.twitter.com/1/users/profile_image/{twitter_account}.xml?size=bigger
https://dev.twitter.com/docs/api/1.1/get/users/show
并在获取他的图片之后检索
profile_image_url
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等部分来调整大小。