Ambil profil Facebook dari klien Xamarin

Saya ingin mendapatkan informasi dasar pengguna dari Facebook setelah pengguna masuk.

Saya telah melihat dokumentasi di Cara: Bekerja dengan otentikasi dan di bagian "Cara: Mengambil informasi pengguna yang diautentikasi", ini menunjukkan cara melakukannya dari Kode backend .NET dengan menggunakan HttpClient untuk melakukan panggilan dengan AccessToken:

var fbRequestUrl = "https://graph.facebook.com/me/feed?access_token=" 
        + credentials.AccessToken;

Karena klien seluler memiliki accessToken yang kami dapatkan dari MobileServices, dapatkah klien melakukan panggilan langsung ke titik akhir Facebook, atau apakah SDK klien memberi kami fungsionalitas bawaan?

Saya telah mengikuti proyek Xamarin.Forms Sport dan cara mereka mendapatkan informasi pengguna dari Google dilakukan dengan mengkodekan titik akhir Google dan melakukan panggilan untuk mendapatkan info pengguna.

Catatan: Xamarin.Forms Sport menggunakan Layanan Seluler, bukan Aplikasi Seluler, jadi tidak yakin apakah itu ada bedanya.


person Cloud SME    schedule 05.02.2016    source sumber


Jawaban (1)


Sepertinya Anda melakukan login yang diarahkan ke server: di mana Anda melakukan panggilan ke backend untuk melakukan proses login dengan Facebook. Dalam hal ini, aplikasi klien Anda membuat panggilan GET ke .auth/login/facebook, yang membuka browser atau Broker Otentikasi Web tempat Anda memasukkan kredensial Anda. Hasil akhirnya adalah Anda akan menerima token akses Zumo (berbeda dengan token akses Facebook).

Anda tidak dapat menggunakan token akses Zumo untuk mengakses API Facebook sendiri. Di "Cara:" yang Anda tautkan, kami menunjukkan cara menggunakan GetAppServiceIdentityAsync dari backend untuk mendapatkan token akses Facebook. Hal ini dimungkinkan karena Anda telah menyimpan ID klien Facebook Anda melalui portal, yang tersedia untuk backend.

Keuntungan melakukan autentikasi seperti ini adalah Anda tidak perlu menerapkan Id Klien Facebook dengan aplikasi seluler Anda. Namun, jika Anda ingin mengakses API Facebook dari klien, Anda harus memberikan token Facebook ke klien.

Beberapa cara yang bisa saya sarankan:

  1. Hubungi .auth/me dari klien Anda. Responsnya akan memberi Anda objek JSON yang dapat Anda parsing yang harus menyertakan token FB yang terkait dengan token Zumo Anda.

  2. Tulis API khusus dengan kumpulan atribut [Otorisasi] yang akan menjalankan GetAppServiceIdentityAsync dan merespons dengan nilai token akses facebook. Anda kemudian dapat menguraikan respons dari klien Anda. Ini pada dasarnya adalah apa yang dilakukan .auth/me, tetapi Anda dapat menulisnya untuk mengembalikan token akses FB Anda saja.

  3. Gunakan Facebook .NET SDK http://facebooksdk.net/ untuk melakukan proses masuk yang diarahkan oleh klien. Anda akan mendapatkan token Facebook di klien Anda, lalu Anda dapat menggunakan metode LoginAsync (Facebook, access_token) kami untuk mendapatkan token Zumo sehingga klien Anda dapat mengakses Facebook dan backend Aplikasi Seluler Anda. Kerugiannya, seperti yang saya sebutkan sebelumnya, adalah Anda harus menggunakan ID Klien FB dengan aplikasi Anda.

person Aziel    schedule 05.02.2016
comment
Saya tidak menyangka bahwa token tersebut bukanlah token akses Facebook! Saya paling suka pendekatan #1. Jadi setelah saya memiliki token akses FB, saya akan menelepon ke graph.facebook.com/me titik akhir dari klien untuk mendapatkan info pengguna? - person Cloud SME; 06.02.2016
comment
Satu pertanyaan terakhir, jika token akses FB telah kedaluwarsa, bagaimana cara saya mendapatkan token akses baru menggunakan token penyegaran? - person Cloud SME; 07.02.2016
comment
Hai Queti, Saat ini kami tidak mendukung penyegaran untuk Facebook. Alasannya karena token yang kami dapatkan dari facebook merupakan token extended. Saat ini tidak ada dukungan untuk memperbarui token yang diperluas. Lihat tautan ini untuk informasi selengkapnya tentang token yang diperluas: tautan. Tampaknya setelah perpanjangan masa berlakunya habis, pengguna Anda akan masuk lagi, tetapi tidak perlu memasukkan kembali kredit. - person Aziel; 08.02.2016