2013-08-22 46 views
20

Có cách nào để tạo url hình ảnh hồ sơ với id người dùng hoặc tên màn hình không? Tôi lưu trữ id người dùng trong cơ sở dữ liệu nhưng tôi không muốn lưu trữ url hình ảnh hồ sơ.Xây dựng url hình ảnh tiểu sử trên Twitter với id người dùng Twitter

chỉnh sửa:
Tôi cũng không muốn thực hiện cuộc gọi api nữa. Tôi muốn đặt user_id bên trong url như

<img src="https://twitter.com/users/profile_pic?user_id=123"> Có url để thực hiện việc này không?

Trả lời

3

Bạn có thể lấy nó bằng cách sử dụng users/show method of the Twitter API - nó thực hiện chính xác những gì bạn mô tả. Bạn cung cấp cho nó một ID hoặc tên màn hình và nó trả về một loạt dữ liệu, bao gồm profile_image_url.

+0

tôi không muốn thực hiện một cuộc gọi api quá. Tôi muốn đặt user_id bên trong url như '' là có thể? – Tahtakafa

+3

không có cách nào cho rằng theo như tôi biết - Twitter đã khá đáng ghét về API của họ trong vài năm qua – dnet

-2

Vâng, tôi đang sử dụng một cách khéo léo qua 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 

này sẽ cung cấp cho bạn một cái gì đó như thế này; https://pbs.twimg.com/profile_images/378800000487958092/e04a191de329fcf8d000ca03073ad594_bigger.png

để nhận 2 kích thước khác; để xóa phiên bản lớn, "_bigger" cho phiên bản nhỏ hơn thay thế "_bigger" bằng "_normal"

-1

Không có cách nào để thực hiện điều đó. Trong thực tế Twitter không cung cấp một địa chỉ để làm điều đó như facebook không (https://graph.facebook.com//lĩnh vực = hình ảnh?)

Vấn đề là báo cáo nhưng tình trạng này là: 'WontFix', hãy xem:

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

78

với API 1.1 bạn có thể đạt được bằng url này

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

Ví dụ

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

sẽ chuyển hướng đến

https://pbs.twimg.com/profile_images/2284174594/apcu4c9tu2zkefnev0jt.png 
+5

Một lưu ý, nếu bạn thực hiện việc này trên trình duyệt dành cho thiết bị di động, nó sẽ không chuyển hướng chính xác. Một phần nỗ lực của Twitter để chuyển hướng mọi người đến m.twitter.com – jfred

+1

Thận trọng! Nếu bạn làm điều này và screen_name đã thay đổi thì twitter sẽ chuyển hướng yêu cầu mage của bạn đến trang chủ. Nhận được lộn xộn nếu bạn đang popping những thẳng vào

+3

là có một URL tương tự cho hình nền? nó không phải profile_background_image như bạn nghĩ (mà khớp với một khóa API trả về). –

1

Dựa trên câu trả lời của @Cris tiana214

Đoạn mã PHP sau có thể được sử dụng để thực hiện công việc lừa https://twitter.com/[screen_name]/profile_image?size=normal trên thiết bị di động.

Do Twitters chuyển hướng đến phiên bản di động của các liên kết trang web như https://twitter.com/[screen_name]/profile_image?size=normal bị hỏng trên thiết bị di động

Vì vậy, kịch bản được các phản ứng chuyển hướng (với diện của người dùng) chiết xuất địa chỉ sau đó chuyển hướng các trang đó

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

vì vậy, đây có thể là truy cập như twitteravatar.php? id = twitter mà (tại thời điểm viết bài) tải lại để https://pbs.twimg.com/profile_images/767879603977191425/29zfZY6I_normal.jpg

Không đẹp, nhưng hoạt động.

5

Giới thiệu cách dễ nhất để tải hình ảnh hồ sơ trên Twitter mà không cần API Twitter.

Sử dụng http://avatars.io/

Như @AlexB, @jfred nói nó không hoạt động ở tất cả trên các thiết bị di động.

Và đó là một cách khá HARD cách để nhận URL được chuyển hướng bằng cách sử dụng các khung công tác chung PHP hoặc Javascript trong trang duy nhất của bạn.

Chỉ cần gọi http://avatars.io/twitter/ruucm vào thẻ hình ảnh của bạn.

như

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

Tôi đã thử nghiệm nó kiễu góc 2+ và nó hoạt động nhưng bất kỳ vấn đề

+1

điều này khá hay. Cảm ơn bạn đã chia sẻ về avatars.io! – BarryMode

+1

Tuyệt vời! Cảm ơn nhiều –

Các vấn đề liên quan