API Grafik Facebook: dapatkan gambar yang lebih besar dalam satu permintaan


88

Saat ini saya menggunakan Graph API Explorer untuk melakukan beberapa tes. Itu alat yang bagus.

Saya ingin mendapatkan daftar teman pengguna, dengan nama, id, dan gambar teman. Jadi saya mengetik:

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

Tetapi gambarnya hanya 50x50, dan saya ingin yang lebih besar dalam permintaan ini.

Apa itu mungkin ?

Jawaban:


68

Anda tidak perlu menarik atribut 'gambar'. ada cara yang jauh lebih nyaman, satu-satunya yang Anda butuhkan adalah userid, lihat contoh di bawah;

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

Jenis ps menentukan ukuran yang Anda inginkan

Harap diingat bahwa menggunakan token dengan izin dasar, / me / friends akan mengembalikan daftar teman hanya dengan atribut id + name


1
Tapi saya tidak setuju dengan Anda kalimat terakhir: dengan izin dasar, Anda dapat mengakses lebih dari atribut id + nama, mis .: graph.facebook.com/btaylor
Martin

29
uhm, bagaimana dengan "dalam satu permintaan"?
Iulian Onofrei

4
Anda juga bisa menggunakan instat gambar_lengkap.
Bo Pennings

"message": "(# 12) tepi gambar untuk jenis ini tidak berlaku lagi untuk versi v2.3 dan lebih tinggi",
Toolkit

202

Seperti yang dijelaskan dalam bug ini di Facebook, Anda juga dapat meminta ukuran gambar tertentu sekarang melalui sintaks " perluasan bidang " API baru .

Seperti:

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

27
Memang. bidang = gambar.width (640) bahkan lebih baik.
kaay

6
Sepertinya API Grafik Facebook mengubah apinya. Facebook menjawab "Subbidang tidak didukung oleh gambar" ketika saya mencoba menggunakan saran Anda.
Phat H. VU

2
mendapatkan kesalahan: {"error": {"message": "Permintaan dapatkan tidak didukung. Baca dokumentasi API Grafik di developers.facebook.com/docs/graph-api ", "type": "GraphMethodException", "code": 100}}
Vineesh TP

13
Lihat? Field = full_picture, lampiran untuk kueri 2.x
Kevin

3
Dengan Perubahan Facebook Baru, tidak bisa mendapatkan gambar yang lebih besar. Ada petunjuk siapa?
shadab.tughlaq

82

Cara terbaik untuk mendapatkan semua teman (yang juga menggunakan Aplikasi, tentu saja) dengan ukuran gambar yang benar adalah menggunakan perluasan bidang , baik dengan salah satu tag ukuran (persegi, kecil, normal, besar):

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

(edit: ini tidak berfungsi lagi)

... atau Anda dapat menentukan lebar / tinggi:

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

Btw, kamu juga bisa menulisnya seperti ini:

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

1
thanx untuk infonya, saya akan memperbarui jawabannya. full_picture tampaknya tidak berfungsi untuk teman: / me / friends? fields = full_picture - apakah Anda tahu bagaimana ini mungkin?
luschn

34

Ubah array bidang id,name,picturemenjadiid,name,picture.type(large)

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

Hasil:

{
   "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
Bagaimana ukuran 200 x 200?
AlxVallejo

1
Di API Grafik (2.10) terbaru tidak tersedia ukuran "besar":Graph returned an error: (#100) For field 'picture': type must be one of the following values: thumbnail, small, album
Honza

33

Anda dapat mengatur ukuran gambar dalam piksel, seperti ini:

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

Dengan cara yang sama, typeparameter dapat digunakan

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

Dari dokumentasi

ketik enum {small, normal, album, large, square}



20

Saya meneliti Graph API Explorer secara ekstensif dan akhirnya menemukan full_picture

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

PS Saya perhatikan bahwa gambar_lengkap tidak selalu memberikan gambar ukuran penuh yang saya inginkan. 'keterikatan' tidak

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

ini hanya menunjukkan lebar: 720px. Anda hanya menemukan foto besar seperti ini. untuk grafik terbesar.facebook.com/photo_id Anda dapat melihat 6 ukuran foto yang berbeda.
gokhan

saya baru saja menguji ini dengan titik akhir teman dan tidak berhasil
luschn

9

Hum ... Saya rasa saya sudah menemukan solusi.

Padahal, di bisa saja request

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

Menurut http://developers.facebook.com/docs/reference/api/ (bagian "Gambar"), url foto profil dapat dibuat dengan id pengguna

Misalnya, anggap user id ada di $ 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"

Tapi itu bukan URL gambar final, jadi jika seseorang memiliki solusi yang lebih baik, saya akan senang mengetahuinya :)



3

Anda dapat menentukan width& heightdalam permintaan Anda ke API grafik Facebook:http://graph.facebook.com/user_id/picture?width=500&height=500


2

Dari v2.7, /<picture-id>?fields=imagesakan memberi Anda daftar dengan ukuran gambar yang berbeda, elemen pertama adalah gambar ukuran penuh.

Saya tidak tahu solusi apa pun untuk banyak gambar sekaligus.


1

Dalam gambar URL ditemukan dalam tanggapan Grafik (the " http://photos-c.ak.fbcdn.net/ "), ganti saja "_s.jpg" default dengan "_n.jpg" (? Ukuran normal) atau "_b.jpg" (? ukuran besar) atau "_t.jpg" (thumbnail).

URL yang mudah dipahami / REST API membuat Web lebih baik.


1
Tampaknya selalu memberikan "Terjadi kesalahan saat memproses permintaan Anda. Referensi # 50.27f74317.14274.604fb0" sayangnya sekarang
Kevin

1

rest-fb users (gambar persegi, resolusi lebih besar): Sambungan myFriends = fbClient.fetchConnection ("saya / teman", User.class, Parameter.with ("fields", "public_profile, email, first_name, last_name, gender, picture .width (100) .height (100) "));


1

Saya mendapatkan kesalahan ini ketika saya membuat permintaan dengan picture.type(full_picture):

"(# 100) Untuk bidang 'gambar': jenis harus salah satu dari nilai berikut: kecil, normal, album, besar, persegi"

Ketika saya membuat permintaan dengan picture.type(album)dan picture.type(square), menanggapi saya dengan gambar berukuran 50x50 piksel.

Saat saya membuat permintaan dengan picture.type(large), jawab saya dengan gambar berukuran 200x200 piksel.

Saat saya membuat permintaan dengan picture.width(800), jawab saya dengan gambar berukuran 477x477 piksel.

dengan picture.width(250), tanggapan 320x320.

dengan picture.width(50), tanggapan 50x50.

dengan picture.width(100), tanggapan 100x100.

dengan picture.width(150), tanggapan 160x160.

Saya pikir facebook memberikan gambar yang ukurannya berubah secara bervariasi saat pengguna pertama kali menambahkan foto itu.

Apa yang saya lihat di sini, API untuk meminta Gambar pengguna tidak mendukung pengubahan ukuran gambar yang diminta. Ini memberikan ukuran gambar terdekat, saya kira.


Benar ... "picture.type (besar)" juga memberi saya 200x200 - tidak terlalu besar, saya harus mengatakan
James


0

Menurut saya, sekarang satu-satunya cara untuk mendapatkan foto teman yang besar adalah dengan menggunakan FQL. Pertama, Anda perlu mengambil daftar teman:

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

Kemudian parse daftar ini dan ekstrak semua teman ids. Jika Anda memilikinya, cukup jalankan kueri FQL berikut:

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

200ini hanya ukuran contoh, Anda dapat memasukkan apa saja. Anda harus mendapatkan tanggapan berikut:

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

Dengan setiap url menjadi tautan ke gambar 200x200px.




0

Varian bergaya JS. Cukup atur lebar gambar besar yang sangat besar dan Anda akan mendapatkan varian terbesar.

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

0

Anda bisa menggunakan full_picture sebagai ganti kunci gambar untuk mendapatkan gambar ukuran penuh.


0

Catatan : Dari Graph API v8.0 Anda must provide the access tokenuntuk setiap permintaan UserID yang Anda lakukan.

Menekan API grafik:

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

Dengan firebase:

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

Anda mendapatkan token registerCallbackhanya dari ini

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

Inilah yang dikatakan dokumentasi:

Mulai 24 Oktober 2020, token akses akan diperlukan untuk semua kueri berbasis UID. Jika Anda membuat kueri UID dan karenanya harus menyertakan token:

  • menggunakan token akses Pengguna untuk permintaan otentikasi Login Facebook
  • menggunakan token akses halaman untuk permintaan dengan cakupan halaman
  • menggunakan token akses Aplikasi untuk permintaan sisi server
  • menggunakan token akses Klien untuk permintaan sisi klien seluler atau web

Kami menyarankan Anda hanya menggunakan token Klien jika Anda tidak dapat menggunakan salah satu dari jenis token lainnya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.