使用Twitter用户ID构建Twitter个人资料图片网址

时间:2013-08-22 13:22:52

标签: twitter

有没有办法用用户ID或屏幕名称构建个人资料图片网址?我将用户ID存储在数据库中,但我不想存储配置文件图像URL。

修改
我也不想打电话给api。我想把user_id放在像

这样的网址中

<img src="https://twitter.com/users/profile_pic?user_id=123">有这样的网址吗?

10 个答案:

答案 0 :(得分:100)

使用API​​ 1.1

可以使用此URL实现

https://twitter.com/[screen_name]/profile_image?size=mini     https://twitter.com/[screen_name]/profile_image?size=normal     https://twitter.com/[screen_name]/profile_image?size=bigger     https://twitter.com/[screen_name]/profile_image?size=original

<强> Official twitter documentation Profile Images and Banners

<强> 实施例

  https://twitter.com/TwitterEng/profile_image?size=original 
  

将重定向到

    https://pbs.twimg.com/profile_images/875168599299637248/84CkAq6s.jpg

答案 1 :(得分:18)

介绍在没有Twitter API的情况下获取Twitter个人资料图片的最简单方法。

使用http://avatars.io/

作为@AlexB,@ jfred表示它在MOBILE设备上根本不起作用。

这是一种非常 HARD 的方法,可以在您的单页中使用常见的PHP或Javascript框架来获取重定向的URL。

只需在您的图片代码中致电http://avatars.io/twitter/ruucm

<img src="https://avatars.io/twitter/ruucm" alt="twt_profile" border="0" width="259"/>

我已经测试过Angular 2+,它可以解决任何问题

答案 2 :(得分:16)

从2020年6月开始,已接受的答案和avatars.io都不再起作用。这是两种选择:

unavatar.now.sh

Unavatar可以从包括Twitter在内的许多不同地方获取图片。将下面网址中的[screen_name]替换为所需的Twitter用户名。

<img src="https://unavatar.now.sh/twitter/[screen_name]" />

例如:

<img src="https://unavatar.now.sh/twitter/jack" width="100" height"100" />

如果上面的演示停止运行,则可能是因为unavatar.now.sh不再可用。

Unavatar虽然是开源的,所以如果出现故障,则可以从here自己部署它-该仓库甚至具有“ Deploy to Vercel / Heroku”按钮。专门用于获取Twitter头像的代码为here,因此您也可以将其用作自己的后端的一部分。

twivatar.glitch.me

如果需要替代方法,也可以使用twivatar.glitch.me。将下面网址中的[screen_name]替换为所需的Twitter用户名。

<img src="https://twivatar.glitch.me/[screen_name]" />

例如:

<img src="https://twivatar.glitch.me/jack" width="100" height"100" />

如果上面的演示停止运行,则可能是因为twivatar.glitch.me不再可用。

顺便说一句,我没有构建任何一种服务,它们都是由其他人提供的。

答案 3 :(得分:3)

您可以使用users/show method of the Twitter API获取它 - 它完全按照您的描述进行操作。你给它一个ID或屏幕名称,它返回一堆数据,包括profile_image_url

答案 4 :(得分:1)

基于@Cristiana214的回答

以下PHP代码段可用于使https://twitter.com/[screen_name]/profile_image?size=normal技巧在移动设备上运行。

由于twitters重定向到移动版网站链接,例如https://twitter.com/[screen_name]/profile_image?size=normal在移动设备上被破坏

因此脚本获取重定向响应(到用户头像)提取地址然后重定向页面本身

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]);

所以这可以作为twitteravatar.php?id = twitter访问(在撰写本文时)重新加载到https://pbs.twimg.com/profile_images/767879603977191425/29zfZY6I_normal.jpg

不漂亮但有效。

答案 5 :(得分:1)

我用C#找到了这样的解决方案:

    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"));

答案 6 :(得分:0)

到2020年2月20日,这似乎是不可能的。目前,使用API​​似乎是唯一的选择。有关更多信息,请参阅我在这里打开的问题:Twitter profile picture images now blocked on most domains

答案 7 :(得分:-1)

没有办法做到这一点。事实上,Twitter并没有像facebook那样提供网址(https://graph.facebook.com/ /?fields = picture)

问题是报告,但状态是:&#39; WontFix&#39;,看看:

https://code.google.com/p/twitter-api/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Stars%20Type%20Bug%20Status%20Summary%20Opened%20Modified%20Component&groupby=&sort=&id=242#makechanges

答案 8 :(得分:-2)

我通过PHP Dom Parser

使用了一种棘手的方法
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

这会给你这样的东西; https://pbs.twimg.com/profile_images/378800000487958092/e04a191de329fcf8d000ca03073ad594_bigger.png

获得另外2个尺寸;对于大版本删除,较小版本的“_bigger”将“_bigger”替换为“_normal”

答案 9 :(得分:-5)

使用1.1版,请使用     http://a0.twimg.com/profile_images/XXXXX/afpecvf41m8f0juql78p_normal.png 其中XXXXX是用户ID