IT TIP

Facebook 그래프 API를 사용하여 사용자 프로필 사진을 표시하려면 어떻게해야합니까?

itqueen 2020. 10. 30. 21:20
반응형

Facebook 그래프 API를 사용하여 사용자 프로필 사진을 표시하려면 어떻게해야합니까?


내 애플리케이션 캔버스 페이지 내에 사용자 프로필 사진을 표시하고 싶습니다. 그래프 API를 사용하여 수행 할 수있는 방법이 있습니까?

FBML을 사용하여 할 수 있다는 것을 알고 있지만 프로필 사진을 내가 만드는 플래시 게임에 전달하고 싶습니다. 따라서 API에서 프로필 사진을 가져와 변수로 보내야합니다. 여기에 코드가 있습니다. 지금까지

$facebook = new Facebook(array(
    'appId'  => FACEBOOK_APP_ID,
    'secret' => FACEBOOK_SECRET_KEY,
    'cookie' => true,
    'domain' => 'myurl/facebook-test'
));

$session = $facebook->getSession();

        $uid = $facebook->getUser();
        $me = $facebook->api('/me');

        $updated = date("l, F j, Y", strtotime($me['updated_time']));

        echo "Hello " . $me['name'] . $me['picture'] . "<br />";
  echo "<div style=\"background:url(images/bg.jpg); width:760px; height:630px;\">" . "You last updated your profile on " . $updated . "</div>" . "<br /> your uid is" . $uid;

$me['picture'] 작동하지 않는 것 같지만 여전히 그래프 API에 익숙하지 않으며 아마 아마추어 실수를 몇 가지하고 있습니다!


사용자 ID를 알면 프로필 사진의 URL은 다음과 같습니다.

http://graph.facebook.com/[UID]/picture

[UID] 대신 $ uid 변수를 배치하면 해당 URL이 플래시로 전달 될 수 있습니다.


다른 크기를 얻으려면 type 매개 변수를 사용할 수 있습니다.

정사각형 (50x50), 소형 (50 픽셀 폭, 가변 높이) 및 대형 (약 200 픽셀 폭, 가변 높이) 중 하나 인 type 인수를 사용하여 원하는 그림 크기를 지정할 수 있습니다. http : // graph .facebook.com / squall3d / picture? type = large .


아래와 같이 매개 변수를 제공하여 프로필 사진의 크기를 조정할 수도 있습니다.

https://graph.facebook.com/[UID]/picture?width=140&height=140

너무 작동합니다.


  //create the url
  $profile_pic =  "http://graph.facebook.com/".$uid."/picture";

 //echo the image out
 echo "<img src=\"" . $profile_pic . "\" />"; 

나를 위해 잘 작동


편집 : 그래서 페이스 북이 다시 변경되었습니다! 더 이상 사용자 이름으로 검색하지 마십시오. 아래 답변을 수정했습니다 ...

https://graph.facebook.com/{{UID}}/picture?redirect=false&height=200&width=200
  • UID = 프로필 또는 페이지 ID
  • redirect는 json (false)을 반환하거나 이미지로 리디렉션 (true)합니다.
  • 높이와 너비는 자르기입니다.
  • 인증이 필요하지 않습니다

예 : https://graph.facebook.com/4/picture?redirect=false&height=200&width=200

Facebook Graph 사진 문서


다음은 나를 위해 일한 코드입니다!

유효한 세션이 진행 중이라고 가정하면

//Get the current users id
$uid = $facebook->getUser();

//create the url
$profile_pic =  "http://graph.facebook.com/".$uid."/picture";

//echo the image out
echo "<img src=\"" . $profile_pic . "\" />";

고맙습니다. 레이 네에게갑니다.


CURL을 사용하는 동안 프로필 사진을 가져 오는 데 문제가있었습니다. 잠시 동안 Facebook API 구현에 문제가 있다고 생각했지만 CURL에 다음을 추가해야합니다.

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

한 가지 매우 중요한 점은 다른 Graph API 요청과 마찬가지로 응답으로 JSON 데이터를받지 않고 호출이 프로필 사진의 URL에 대한 HTTP REDIRECT를 반환한다는 것입니다. 따라서 URL을 가져 오려면 응답 HTTP 헤더를 읽거나 FQL을 사용할 수 있습니다.


반환 된 데이터는 이미지 유형의 이진 데이터입니다. JavaScript를 사용하여 사용자 사진을 검색하는 경우 XMLHttpRequest에서 사진 데이터를 blob 유형으로 가져온 다음 응답에서 blob URL을 검색하십시오. 참고로 :

 var request = new XMLHttpRequest;
 var photoUri=config.endpoints.graphApiUri + "/v1.0/me/photo/$value";
 request.open("GET",photoUri);
 request.setRequestHeader("Authorization","Bearer "+token);
 request.responseType = "blob";
 request.onload = function (){
        if(request.readyState == 4 && request.status == 200){
               var image = document.createElement("img");
               var url = window.URL || window.webkitURL;
               var blobUrl = url.createObjectURL(request.response);
               image.src = blobUrl;
               document.getElementById("UserShow").appendChild(image);
        }
 };
 request.send(null); 

참고URL : https://stackoverflow.com/questions/3012905/how-can-i-display-the-users-profile-pic-using-the-facebook-graph-api

반응형