在API 1.0中,我们可以使用users/profile_image/:screen_name
例如:http://api.twitter.com/1/users/profile_image/EA_FIFA_FRANCE
但是,它在 API 1.1中不再有效。
请问您有解决方案吗?
答案 0 :(得分:53)
您还可以通过调用此类网址获取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
答案 1 :(得分:34)
好的,所以你想要一个用户的个人资料图片。你需要看一下twitter REST API 1.1 docs。这是您可以对其API发出的所有不同请求的列表(不用担心,我将在稍后的 中实际执行此操作)。
有多种方法可以获取用户的个人资料图片,但最值得注意的是:users/show。根据这方面的文档,用户/ show方法:
返回有关由所需user_id或screen_name参数指定的用户的各种信息。作者的最新推文将尽可能内联返回。
那么,用户个人资料图片必须在某处,对吗?
让我们看看使用users / show url对此信息的请求的典型响应(我们将使用我的个人资料作为示例)。
我从底部切断了一些,因为要经过很多数据。最重要的是,你会看到你需要的东西:
这是您需要访问的 profile_image_url 键。
那么,你怎么做这一切?实际上,它非常简单。
正如您正确指出的那样,截至2013年6月11日,您无法再生成未经身份验证的请求或任何1.0 API,因为它已经停用。因此,OAuth是向1.1 API发出请求的方式。
我写了一篇 stack overflow post ,目的是帮助所有人尽快向1.1 API提出经过身份验证的请求。
当您使用它时,您将获得上面看到的响应。按照帖子说明,一步一步,您可以获得库here(您只需要在项目中包含一个文件)。
基本上,上一篇文章解释说您需要执行以下操作:
$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
字段获取图片。此方法需要id
或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
答案 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)
正如之前的回答和评论所指出的那样:
挑选任何两个;这三个人都是禁区。 @ 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等。