Saya memiliki aplikasi desktop Facebook dan menggunakan Graph API . Saya bisa mendapatkan token akses, tetapi setelah itu selesai - saya tidak tahu cara mendapatkan ID pengguna.
Aliran saya seperti ini:
Saya mengirim pengguna ke https://graph.facebook.com/oauth/authorize dengan semua izin tambahan yang diperlukan.
Di halaman redirect saya, saya mendapatkan kode dari Facebook.
Kemudian saya melakukan permintaan HTTP ke graph.facebook.com/oauth/access_token dengan kunci API saya dan saya mendapatkan token akses sebagai tanggapan.
Sejak saat itu saya tidak bisa mendapatkan ID pengguna.
Bagaimana masalah ini diselesaikan?
facebook
facebook-graph-api
Mohoch
sumber
sumber
https://graph.facebook.com/me?fields=id&access_token=xxxxxx
Cara termudah adalah
maka Anda akan mendapatkan respon json yang hanya berisi userid.
sumber
Token akses facebook juga terlihat serupa "1249203702 | 2.h1MTNeLqcLqw __. 86400.129394400-605430316 | -WE1iH_CV-afTgyhDPc"
jika Anda mengekstrak bagian tengah dengan menggunakan | untuk memisahkan Anda
2.h1MTNeLqcLqw __. 86400.129394400-605430316
kemudian bagi lagi dengan -
bagian terakhir 605430316 adalah id pengguna.
Berikut adalah kode C # untuk mengekstrak id pengguna dari token akses:
public long ParseUserIdFromAccessToken(string accessToken) { Contract.Requires(!string.isNullOrEmpty(accessToken); /* * access_token: * 1249203702|2.h1MTNeLqcLqw__.86400.129394400-605430316|-WE1iH_CV-afTgyhDPc * |_______| * | * user id */ long userId = 0; var accessTokenParts = accessToken.Split('|'); if (accessTokenParts.Length == 3) { var idPart = accessTokenParts[1]; if (!string.IsNullOrEmpty(idPart)) { var index = idPart.LastIndexOf('-'); if (index >= 0) { string id = idPart.Substring(index + 1); if (!string.IsNullOrEmpty(id)) { return id; } } } } return null; }
PERINGATAN: Struktur token akses tidak berdokumen dan mungkin tidak selalu sesuai dengan pola di atas. Gunakan dengan resiko Anda sendiri.
Perbarui Karena perubahan di Facebook. metode yang disukai untuk mendapatkan userid dari token akses terenkripsi adalah sebagai berikut:
try { var fb = new FacebookClient(accessToken); var result = (IDictionary<string, object>)fb.Get("/me?fields=id"); return (string)result["id"]; } catch (FacebookOAuthException) { return null; }
sumber
Anda dapat menggunakan kode di bawah ini pada onSuccess (LoginResult loginResult)
sumber
Anda hanya perlu menekan API Grafik lain:
Ini akan memberikan Id email Anda dan ID pengguna (untuk Facebook) juga.
sumber
Dengan API terbaru, berikut kode yang saya gunakan untuk itu
sumber
di FacebookSDK v2.1 (Saya tidak dapat memeriksa versi lama). Kita punya
Namun demikian menurut komentar di FacebookSDK
@discussion Ini mungkin tidak diisi untuk perilaku login seperti akun sistem iOS.
Jadi mungkin Anda harus memeriksa apakah itu tersedia, dan kemudian apakah menggunakannya, atau memanggil permintaan untuk mendapatkan id pengguna
sumber
Lihat jawaban ini , yang menjelaskan, bagaimana mendapatkan respon ID. Pertama, Anda perlu membuat metode get data:
Kemudian cukup gunakan metode Anda kapan pun Anda mau, seperti ini:
sumber