Facebook Graph API : 한 번의 요청으로 더 큰 사진 가져 오기


88

현재 Graph API Explorer 를 사용하여 몇 가지 테스트를하고 있습니다. 그것은 좋은 도구입니다.

친구의 이름, 아이디, 사진과 함께 사용자의 친구 목록을 얻고 싶습니다. 그래서 다음을 입력합니다.

https://graph.facebook.com/me/friends?fields=id,picture,name

하지만 사진은 50x50에 불과하며이 요청에서 더 큰 사진을 원합니다.

가능합니까?

답변:


68

그래도 '그림'속성을 가져올 필요는 없습니다. 훨씬 더 편리한 방법이 있습니다. 필요한 것은 userid뿐입니다. 아래 예를 참조하세요.

https://graph.facebook.com/user_id/picture?type=large

ps 유형은 원하는 크기를 정의합니다.

plz는 기본 권한이있는 토큰을 사용하면 / me / friends는 id + name 속성 만있는 친구 목록을 반환합니다.


1
하지만 마지막 문장에 동의하지 않습니다. 기본 권한이 있으면 id + name 속성 이상에 액세스 할 수 있습니다. 예 : graph.facebook.com/btaylor
Martin

29
"하나의 요청으로"는 어떻습니까?
Iulian Onofrei 2014

4
U는 또한 full_picture instat of picture를 사용할 수 있습니다.
Bo Pennings 2011

"message": "(# 12)이 유형의 picture edge는 버전 v2.3 이상에서 사용되지 않음",
Toolkit

201

Facebook 의이 버그 에 설명 된대로 이제 새 API " field expansion "구문을 통해 특정 이미지 크기를 요청할 수도 있습니다 .

이렇게 :

https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large)

27
과연. fields = picture.width (640)가 더 좋습니다.
kaay 2014

6
Facebook Graph API가 API를 변경 한 것 같습니다. 귀하의 제안을 사용하려고 할 때 Facebook이 "그림에서 하위 필드를 지원하지 않습니다"라고 응답했습니다.
Phat H. VU

2
오류 발생 : { "error": { "message": "지원되지 않는 get 요청입니다. developers.facebook.com/docs/graph-api 에서 그래프 API 문서를 읽으십시오. ", "type": "GraphMethodException", "code": 100}}
Vineesh TP 2014-10-13

13
? 2.X 쿼리에 대한 필드 = full_picture, 첨부 파일을 참조하십시오
케빈

3
새로운 Facebook 변경으로 더 큰 이미지를 얻을 수 없습니다. 힌트가 있습니까?
shadab.tughlaq

81

모든 친구 (물론 앱을 사용하는)를 올바른 사진 크기로 얻는 가장 좋은 방법 은 크기 태그 (정사각형, 소형, 보통, 대형) 중 하나 를 사용하여 필드 확장 을 사용 하는 것입니다.

/me/friends?fields=picture.type(large)

(편집 : 더 이상 작동하지 않음)

... 또는 너비 / 높이를 지정할 수 있습니다.

me/friends?fields=picture.width(100).height(100)

Btw, 다음과 같이 작성할 수도 있습니다.

me?fields=friends{picture.type(large)}

1
정보에 대한 고맙습니다, 나는 대답을 업데이트 할 것입니다. full_picture는 친구에게는 작동하지 않는 것 같습니다 : / me / friends? fields = full_picture-이것이 어떻게 가능할지 아십니까?
luschn

34

필드의 배열을 변경 id,name,picture하는 방법에 대해id,name,picture.type(large)

https://graph.facebook.com/v2.8/me?fields=id,name,picture.type(large)&access_token=<the_token>

결과:

{
   "id": "130716224073524",
   "name": "Julian Mann",
   "picture": {
      "data": {
         "is_silhouette": false,
         "url": "https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/15032818_133926070419206_3681208703790460208_n.jpg?oh=a288898d87420cdc7ed8db5602bbb520&oe=58CB5D16"
      }
   }
}

7
200 x 200은 얼마나 큽니까?
AlxVallejo

1
최신 (2.10)에서 Graph API는 "큰"크기가 아닙니다.Graph returned an error: (#100) For field 'picture': type must be one of the following values: thumbnail, small, album
Honza

33

다음과 같이 그림의 크기를 픽셀 단위로 설정할 수 있습니다.

https://graph.facebook.com/v2.8/me?fields=id,name,picture.width(500).height(500)

유사한 방식으로 type매개 변수를 사용할 수 있습니다.

{user-id}/?fields=name,picture.type(large)

로부터 문서

enum {small, normal, album, large, square} 유형



20

Graph API Explorer를 광범위하게 조사하고 마침내 full_picture를 찾았습니다.

https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture

추신 : full_picture가 내가 원하는 전체 크기 이미지를 항상 제공하지는 않는다는 것을 알았습니다. '첨부 파일'은

https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture,attachments

너비 : 720px 만 표시됩니다. 당신은 이렇게 큰 사진을 찾을 수 있습니다. 가장 큰 graph.facebook.com/photo_id의 경우 6 가지 크기의 사진을 볼 수 있습니다.
gokhan

친구가 엔드 포인트와 함께 난 그냥이 테스트가 작동하지 않았다
luschn

9

흠 ... 해결책을 찾은 것 같아요.

사실, 그냥 요청할 수 있습니다

https://graph.facebook.com/me/friends?fields=id,name

http://developers.facebook.com/docs/reference/api/ 에 따르면 ( "사진"섹션) 사용자 ID로 프로필 사진의 URL을 만들 수 있습니다.

예를 들어 사용자 ID가 $ id에 있다고 가정합니다.

"http://graph.facebook.com/$id/picture?type=square"
"http://graph.facebook.com/$id/picture?type=small"
"http://graph.facebook.com/$id/picture?type=normal"
"http://graph.facebook.com/$id/picture?type=large"

그러나 최종 이미지 URL이 아니므로 누군가가 더 나은 솔루션을 가지고 있다면 기뻐할 것입니다. :)



3

Facebook 그래프 API에 대한 요청에서 width& height를 지정할 수 있습니다 .http://graph.facebook.com/user_id/picture?width=500&height=500


2

부터 v2.7,/<picture-id>?fields=images 당신에게 이미지의 다른 크기, 전체 크기의 이미지 인 첫 번째 요소와 목록을 제공 할 것입니다.

한 번에 여러 이미지에 대한 솔루션을 모르겠습니다.


1

그래프 응답 ( " http://photos-c.ak.fbcdn.net/"ones) 에있는 그림 URL에서 기본 "_s.jpg"를 "_n.jpg"(? 정상 크기)로 바꾸거나 "_b.jpg"(? 큰 크기) 또는 "_t.jpg"(썸네일).

Hacakable URL / REST API는 웹을 개선합니다.


1
안타깝게도 "요청을 처리하는 동안 오류가 발생했습니다. 참조 번호 # 50.27f74317.14274.604fb0"이 항상 표시되는 것 같습니다.
Kevin

1

rest-fb 사용자 (정사각형 이미지, 더 큰 해상도) : Connection myFriends = fbClient.fetchConnection ( "me / friends", User.class, Parameter.with ( "fields", "public_profile, email, first_name, last_name, gender, picture) .width (100) .height (100) "));


1

다음과 picture.type(full_picture)같이 요청했을 때이 오류가 발생했습니다 .

"(# 100) 'picture'필드의 경우 type은 small, normal, album, large, square 값 중 하나 여야합니다."

내가 가진 요청을 할 때 picture.type(album)picture.type(square) 50x50 픽셀 크기의 이미지로 응답합니다.

로 요청하면 picture.type(large)200x200 픽셀 크기의 이미지로 응답합니다.

로 요청하면 picture.width(800)477x477 픽셀 크기의 이미지로 응답합니다.

picture.width(250)응답에서 320x320.

picture.width(50) , 응답은 50 × 50.

picture.width(100) 응답 100 × 100.

picture.width(150) 응답 160x160.

페이스 북은 사용자가 사진을 처음 추가 할 때 크기가 다양하게 조정 된 이미지를 제공한다고 생각합니다.

여기에서 사용자 이미지를 요청하는 API는 요청 된 이미지 크기 조정을 지원하지 않습니다. 가장 가까운 이미지 크기를 제공한다고 생각합니다.


사실 ... "picture.type (large)"도 나에게 200x200을주었습니다-그다지 크지는 않습니다
James


0

지금은 친구 사진을 많이 찍을 수있는 유일한 방법은 FQL을 사용하는 것이라고 생각합니다. 먼저 친구 목록을 가져와야합니다.

https://graph.facebook.com/me/friends

그런 다음이 목록을 구문 분석하고 모든 친구를 추출합니다 ids. 이 경우 다음 FQL 쿼리를 실행하십시오.

SELECT id, url FROM profile_pic WHERE id IN (id1, id2) AND width=200 AND height=200

200여기에 예시 크기가 있습니다. 무엇이든 입력 할 수 있습니다. 다음 응답을 받아야합니다.

{
  "data": [
    {
      "id": ..., 
      "url": "https://fbcdn-profile-a.akamaihd.net/..."
    }, 
    {
      "id": ..., 
      "url": "https://fbcdn-profile-a.akamaihd.net/..."
    }
  ]
}

각 URL은 200x200px 이미지에 대한 링크입니다.




0

JS 스타일 변형. 엄청나게 큰 그림 너비를 설정하면 가장 큰 변형을 얻을 수 있습니다.

FB.api(
  '/' + userId,
  {fields: 'picture.width(2048)'},
  function (response) {
    if (response && !response.error) {
      console.log(response.picture.data.url);
    }
  }
);


0

참고 : Graph API v8.0부터는 must provide the access token모든 UserID 요청에 대해 수행합니다.

그래프 API 조회 :

https://graph.facebook.com/<user_id>/picture?height=1000&access_token=<any_of_above_token>

Firebase 사용 :

FirebaseUser user = mAuth.getCurrentUser();
String photoUrl = user.getPhotoUrl() + "/picture?height=1000&access_token=" +
  loginResult.getAccessToken().getToken();

당신은에서 토큰을 얻을 registerCallback그냥이 같은

       LoginManager.getInstance().registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            FirebaseUser user = mAuth.getCurrentUser();
            String photoUrl = user.getPhotoUrl() + "/picture?height=1000&access_token=" + loginResult.getAccessToken().getToken();
        }

        @Override
        public void onCancel() {
            Log.d("Fb on Login", "facebook:onCancel");
        }

        @Override
        public void onError(FacebookException error) {
            Log.e("Fb on Login", "facebook:onError", error);
        }
    });

이것이 문서에 나오는 내용입니다.

2020 년 10 월 24 일부터 모든 UID 기반 쿼리에 액세스 토큰이 필요합니다. UID를 쿼리하여 토큰을 포함해야하는 경우 :

  • Facebook 로그인 인증 요청에 사용자 액세스 토큰 사용
  • 페이지 범위 요청에 페이지 액세스 토큰 사용
  • 서버 측 요청에 앱 액세스 토큰 사용
  • 모바일 또는 웹 클라이언트 측 요청에 클라이언트 액세스 토큰 사용

다른 토큰 유형 중 하나를 사용할 수없는 경우에만 클라이언트 토큰을 사용하는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.