[php] Facebook API-Facebook API를 통해 Facebook 사용자의 프로필 이미지를 얻는 방법 (사용자가 응용 프로그램을 “허용”하지 않아도 됨)

내가 일하고 있어요 CMS 자신의 페이스 북에서 사용자의 프로필 이미지를 가져 URL (즉, http://facebook.com/users_unique_url ). 어떻게하면됩니까? 사용자가 애플리케이션 을 허용 할 필요없이 사용자의 프로필 이미지 URL을 가져 오는 Faceboook API 호출이 있습니까?



답변

URL을 통해 데이터를 가져 오기만하면됩니다 .

http://graph.facebook.com/userid_here/picture

userid_here사진을 얻으려는 사용자의 ID로 바꿉니다 . HTTPS도 사용할 수 있습니다.

PHP file_get_contents기능을 사용하여 해당 URL을 읽고 검색된 데이터를 처리 할 수 있습니다 .

자원:

http://developers.facebook.com/docs/api

참고 : 에서 PHP 의 기능 을 사용하여 해당 URL을 읽을 수 있도록 OpenSSL 확장이 활성화되어 php.ini있는지 확인해야합니다 .file_get_contents


답변

표시하려면 :

50×50 픽셀

<img src="//graph.facebook.com/{{fid}}/picture">

폭 200 픽셀

<img src="//graph.facebook.com/{{fid}}/picture?type=large">

저장하려면 (PHP를 사용하여)

참고 : 이것을 사용하지 마십시오 . 아래 @Foreever의 의견을 참조하십시오.

$img = file_get_contents('https://graph.facebook.com/'.$fid.'/picture?type=large');
$file = dirname(__file__).'/avatar/'.$fid.'.jpg';
file_put_contents($file, $img);

여기서 $ fid는 Facebook의 사용자 ID입니다.

참고 : “18+”로 표시된 이미지의 경우 18 세 이상의 사용자로부터 유효한 access_token이 필요합니다.

<img src="//graph.facebook.com/{{fid}}/picture?access_token={{access_token}}">

2015 업데이트 :

사용자 이름을 사용하여 Graph API v2.0을 쿼리 할 수 ​​없으므로 항상 사용해야 합니다 userId.


답변

업데이트 :

2012 년 8 월 말부터 다양한 크기의 사용자 프로필 사진을 검색 할 수 있도록 API가 업데이트되었습니다. 선택적 너비 및 높이 필드를 URL 매개 변수로 추가하십시오.

https://graph.facebook.com/USER_ID/picture?width=WIDTH&height=HEIGHT

요청한 측정 기준 값은 어디 WIDTH이며HEIGHT

가로 세로 비율을 유지하는 동안 최소 WIDTHx 크기의 프로필 사진이 반환됩니다 HEIGHT. 예를 들어

https://graph.facebook.com/redbull/picture?width=140&height=110

보고

    {
      "data": {
        "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-ash4/c0.19.180.142/s148x148/2624_134501175351_4831452_a.jpg",
        "width": 148,
        "height": 117,
        "is_silhouette": false
      }
   }

업데이트 종료

사용자의 프로필 사진을 얻으려면 전화

https://graph.facebook.com/USER_ID/picture

여기서 USER_ID사용자 ID 번호 또는 사용자 이름이 될 수 있습니다.

특정 크기의 사용자 프로필 사진을 얻으려면 전화

https://graph.facebook.com/USER_ID/picture?type=SIZE

SIZE단어 중 하나로 대체 해야하는 곳

square
small
normal
large

원하는 크기에 따라

이 호출은 선택한 유형 매개 변수를 기반으로 한 크기의 단일 이미지로 URL 을 반환합니다 .

예를 들면 다음과 같습니다.

https://graph.facebook.com/USER_ID/picture?type=small

이미지의 작은 버전으로 URL을 반환합니다.

API는 실제 크기가 아니라 프로필 이미지의 최대 크기 만 지정합니다.

광장:

최대 너비와 높이는 50 픽셀입니다.

작은

최대 너비는 50 픽셀, 높이는 최대 150 픽셀입니다.

표준

최대 너비 100 픽셀 및 최대 높이 300 픽셀

최대 너비는 200 픽셀, 최대 높이는 600 픽셀입니다.

기본 USER_ID / picture를 호출하면 정사각형 유형이 표시됩니다.

설명

위의 예에 따라 전화하면

https://graph.facebook.com/redbull/picture?width=140&height=110

Facebook SDK 요청 방법 중 하나를 사용하는 경우 JSON 응답 을 반환 합니다 . 그렇지 않으면 이미지 자체를 반환합니다. 항상 JSON을 검색하려면 다음을 추가하십시오.

&redirect=false

이렇게 :

https://graph.facebook.com/redbull/picture?width=140&height=110&redirect=false


답변

이진 콘텐츠가 아닌 이미지 URL을 얻으려면 :

$url = "http://graph.facebook.com/$fbId/picture?type=$size";

$headers = get_headers($url, 1);

if( isset($headers['Location']) )
    echo $headers['Location']; // string
else
    echo "ERROR";

USERNAME이 아닌 FACEBOOK ID를 사용해야합니다. 당신은 당신의 페이스 북 ID를 얻을 수 있습니다 :

http://findmyfbid.com/


답변

서버에 전체 크기 프로필 이미지를 저장하는 간단한 한 줄 코드.

<?php

copy("https://graph.facebook.com/FACEBOOKID/picture?width=9999&height=9999", "picture.jpg");

?>

이것은 php.ini에서 openssl이 활성화 된 경우에만 작동합니다.


답변

이것을 대답에 대한 주석으로 추가했지만 더 자세한 설명이 필요하다고 느꼈습니다. 2015 년 4 월경부터는 몇 번 제기 될 것입니다.

그래프 API의 V2부터 허용되는 답변이 더 이상 사용자 이름을 사용하여 작동하지 않습니다. 이제 사용자 ID가 먼저 필요하며 더 이상 사용자 이름을 사용하여이를 얻을 수 없습니다. 문제를 더욱 복잡하게하기 위해 개인 정보 보호를 위해 Facebook은 이제 앱마다 사용자 ID를 변경하고 있습니다 ( https://developers.facebook.com/docs/graph-api/reference/v2.2/user/https : //developers.facebook 참조) .com / docs / apps / upgrading / # upgrading_v2_0_user_ids )에 따라 사용할 수있는 사용자 ID를 검색하려면 적절한 인증이 필요합니다. 기술적으로 프로필 사진은 여전히 ​​공개되어 있으며 / userid / picture에서 사용할 수 있습니다 ( https://developers.facebook.com/docs/graph-api/reference/v2.0/user/picture 및이 예제 사용자의 문서 참조) . http : //graph.facebook.com/v2.2/4/picture?redirect=0) 그러나 사용자의 표준 사용자 ID를 파악하는 것은 프로필을 기반으로 불가능한 것처럼 보입니다. 앱에서 내 유스 케이스 (FB 프로필 링크 옆에 프로필 사진을 표시하는 것)와의 상호 작용을 승인해야합니다.

누군가가 사용자 이름을 기반으로 프로필 사진을 얻는 방법을 찾은 경우 또는 다른 방법으로 프로필 사진을 검색하는 데 사용할 사용자 ID를 얻는 방법을 알고 있다면 공유하십시오! 그 동안 기존 그래프 URL은 2015 년 4 월까지 계속 작동합니다.


답변

한 가지 방법은 Gamlet이 답변에 게시 한 코드를 사용하는 것입니다.

  • 다른 이름으로 저장 curl.php

  • 그런 다음 파일에서 :

    require 'curl.php';
    
    $photo="https://graph.facebook.com/me/picture?access_token=" . $session['access_token'];
    $sample = new sfFacebookPhoto;
    $thephotoURL = $sample->getRealUrl($photo);
    echo $thephotoURL;

프로필을 공개하는데도 시간이 걸리기 때문에 게시 할 것이라고 생각했습니다. 프로필 사진이 공개되어 있지만 컬링 할 때 액세스 토큰이 있어야 합니다.