有没有一种方法可以使用用户ID或屏幕名称构建个人资料图片URL?我在数据库中存储用户ID,但不想存储个人资料图片URL。
编辑:
我也不想进行API调用。我想把用户ID放在URL中,例如
<img src="https://twitter.com/users/profile_pic?user_id=123">
有没有这样的URL可以实现?
有没有一种方法可以使用用户ID或屏幕名称构建个人资料图片URL?我在数据库中存储用户ID,但不想存储个人资料图片URL。
编辑:
我也不想进行API调用。我想把用户ID放在URL中,例如
<img src="https://twitter.com/users/profile_pic?user_id=123">
有没有这样的URL可以实现?
使用API 1.1,您可以使用以下URL实现此目的:
示例
https://twitter.com/TwitterEng/profile_image?size=original
将会重定向到
https://pbs.twimg.com/profile_images/875168599299637248/84CkAq6s.jpg
截至2020年6月,被接受的答案和avatars.io都已失效。以下是两个替代方案:
(曾用名unavatar.now.sh)
Unavatar可以从许多不同的地方获取图片,包括Twitter。请在下面的URL中用你想要的Twitter用户名替换[screen_name]
。
<img src="https://unavatar.io/twitter/[screen_name]" />
例如:
<img src="https://unavatar.io/twitter/jack" width="100" height"100" />
[screen_name]
替换为您想要的Twitter用户名。<img src="https://twivatar.glitch.me/[screen_name]" />
例如:
<img src="https://twivatar.glitch.me/jack" width="100" height"100" />
介绍一种最简单的方法来获取Twitter个人资料图片,而不使用Twitter API:
正如@AlexB、@jfred所说,它在移动设备上根本不起作用。
而且,使用常见的框架(如PHP或JavaScript)在您的单页中获取重定向URL是相当困难的。
只需在您的图像标签中调用http://avatars.io/twitter/ruucm
,就像这样:
<img src="https://avatars.io/twitter/ruucm" alt="twt_profile" border="0" width="259"/>
我已经在 Angular 2+ 上测试过它,没有任何问题。
if (!isset($_GET['id'])) $_GET['id'] = 'twitter';
$urlget = curl_init();
curl_setopt($urlget, CURLOPT_URL, 'https://twitter.com/' . $_GET['id'] . '/profile_image?size=normal');
curl_setopt($urlget, CURLOPT_HEADER, true);
curl_setopt($urlget, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($urlget);
preg_match_all("/location: (.*)/", $res, $found);
header('Location: ' . $found[1][0]);
public string Text_toTextFinder(string text, string Fromhere, string Here)
{
int start = text.IndexOf(Fromhere) + Fromhere.Length;
int finish = text.IndexOf(Here, start);
return text.Substring(start, finish - start);
}
string getPhotoURL(string UserName, string size ="x96")
{
using (WebClient client = new WebClient())
{
client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
string htmlCode = client.DownloadString("https://twitter.com/" + UserName);
return Text_toTextFinder(Text_toTextFinder(htmlCode, "<td class=\"avatar\">", "</td>"), "src=\"", "\"").Replace("normal",size);
}
}
使用方法:
MessageBox.Show(getPhotoURL("screen_name")); //size = 96x96
MessageBox.Show(getPhotoURL("screen_name","normal"));
MessageBox.Show(getPhotoURL("screen_name","200x200"));
MessageBox.Show(getPhotoURL("screen_name","400x400"));
您可以使用Twitter API的users/show
方法来获取它 - 它正好能做到您描述的所有内容。您提供ID或屏幕名称,它会返回一堆数据,包括profile_image_url
。
<img src="https://twitter.com/users/profile_pic?user_id=123">
这可行吗? - mcan没有办法做到那样。事实上,Twitter不像Facebook那样提供一个可以这样做的URL(https://graph.facebook.com//?fields=picture)
这个问题已经被报告了,但状态是:“不会修复”,请看:
我正在使用一种巧妙的方式,通过PHP Dom解析器
include('simple_html_dom.php');
$html = file_get_html('http://twitter.com/mnckry');
$img = array();
foreach($html->find('img.size73') as $e)
$img[] = $e->src;
foreach($html->find('.profile-header-inner') as $e)
$img[] = str_replace("')", "", str_replace("url('", "", $e->{'data-background-image'}));
echo $img[0];//Avatar
echo "<br>";
echo end($img);//ProfileBG
在1.1版本中,请使用http://a0.twimg.com/profile_images/XXXXX/afpecvf41m8f0juql78p_normal.png,其中XXXXX是用户ID。
https://twitter.com/Rashid_Jorvee/profile_image?size=original
,但是显示出错信息抱歉,该页面不存在!
。 - Rashid