ดึงโปรไฟล์ Facebook จากไคลเอนต์ Xamarin

ฉันต้องการรับข้อมูลผู้ใช้พื้นฐานจาก Facebook หลังจากที่ผู้ใช้เข้าสู่ระบบแล้ว

ฉันได้ดูเอกสารประกอบใน วิธีการ: ทำงานด้วยการตรวจสอบสิทธิ์ และในส่วน "วิธีการ: ดึงข้อมูลผู้ใช้ที่ได้รับการรับรองความถูกต้อง" จะแสดงวิธีการดำเนินการจาก รหัสแบ็กเอนด์ .NET โดยใช้ HttpClient เพื่อโทรออกด้วย AccessToken:

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

เนื่องจากไคลเอนต์มือถือมี accessToken ที่เราได้รับจาก MobileServices ไคลเอนต์สามารถโทรไปยังตำแหน่งข้อมูล Facebook ได้โดยตรง หรือ SDK ไคลเอนต์มีฟังก์ชันการทำงานในตัวให้เราหรือไม่

ฉันได้ติดตามโปรเจ็กต์ Xamarin.Forms Sport และวิธีที่พวกเขาได้รับ ข้อมูลผู้ใช้จาก Google เกิดจากการฮาร์ดโค้ดปลายทางของ Google และ โทรออกเพื่อรับข้อมูลผู้ใช้

หมายเหตุ: Xamarin.Forms Sport ใช้บริการบนมือถือ ไม่ใช่แอปบนมือถือ ดังนั้นจึงไม่แน่ใจว่าจะสร้างความแตกต่างหรือไม่


person Cloud SME    schedule 05.02.2016    source แหล่งที่มา


คำตอบ (1)


ดูเหมือนว่าคุณกำลังทำการเข้าสู่ระบบที่ควบคุมโดยเซิร์ฟเวอร์: โดยที่คุณกำลังโทรหาแบ็กเอนด์ของคุณเพื่อทำการเข้าสู่ระบบด้วย Facebook ในขั้นตอนนี้ แอปพลิเคชันไคลเอนต์ของคุณกำลังทำการเรียก GET ไปที่ .auth/login/facebook ซึ่งจะเปิดเบราว์เซอร์หรือ Web Authentication Broker ที่คุณป้อนข้อมูลประจำตัวของคุณ ผลลัพธ์ที่ได้คือคุณจะได้รับโทเค็นการเข้าถึง Zumo (แตกต่างจากโทเค็นการเข้าถึง Facebook)

คุณไม่สามารถใช้โทเค็นการเข้าถึง Zumo เพื่อเข้าถึง Facebook API เพียงอย่างเดียว ใน "วิธีการ:" ที่คุณเชื่อมโยง เราจะแสดงวิธีใช้ GetAppServiceIdentityAsync จากแบ็คเอนด์เพื่อรับโทเค็นการเข้าถึง Facebook สิ่งนี้เป็นไปได้เนื่องจากคุณได้จัดเก็บ ID ไคลเอนต์ Facebook ของคุณผ่านทางพอร์ทัล ซึ่งมีให้สำหรับแบ็กเอนด์

ข้อดีของการดำเนินการรับรองความถูกต้องเช่นนี้คือคุณไม่จำเป็นต้องปรับใช้ Facebook Client Id กับแอพมือถือของคุณ หากคุณต้องการเข้าถึง Facebook API จากไคลเอนต์ คุณจะต้องรับโทเค็น Facebook ไปยังไคลเอนต์

สองสามวิธีที่ฉันสามารถแนะนำได้:

  1. โทร .auth/me จากลูกค้าของคุณ การตอบกลับจะให้ออบเจ็กต์ JSON แก่คุณที่คุณสามารถแยกวิเคราะห์ได้ ซึ่งควรมีโทเค็น FB ที่เชื่อมโยงกับโทเค็น Zumo ของคุณ

  2. เขียน API แบบกำหนดเองด้วยชุดแอตทริบิวต์ [Authorize] ที่จะดำเนินการ GetAppServiceIdentityAsync และตอบสนองด้วยค่าของโทเค็นการเข้าถึง Facebook จากนั้นคุณสามารถแยกวิเคราะห์การตอบสนองจากไคลเอนต์ของคุณได้ โดยพื้นฐานแล้วนี่คือสิ่งที่ .auth/me ทำ แต่คุณสามารถเขียนเพื่อคืนเฉพาะโทเค็นการเข้าถึง FB ของคุณได้

  3. ใช้ Facebook .NET SDK http://facebooksdk.net/ เพื่อเข้าสู่ระบบโดยไคลเอ็นต์ คุณจะได้รับโทเค็น Facebook บนไคลเอนต์ของคุณ จากนั้นคุณสามารถใช้วิธี LoginAsync(Facebook, access_token) ของเราเพื่อรับโทเค็น Zumo เพื่อให้ไคลเอนต์ของคุณสามารถเข้าถึงทั้ง Facebook และแบ็กเอนด์แอพมือถือของคุณ ข้อเสียดังที่ฉันได้กล่าวไว้ก่อนหน้านี้คือคุณจะต้องปรับใช้ FB Client ID ของคุณกับแอปของคุณ

person Aziel    schedule 05.02.2016
comment
ฉันไม่รู้ว่าโทเค็นนั้นไม่ใช่โทเค็นการเข้าถึง Facebook! ฉันชอบแนวทาง #1 ที่สุด ดังนั้นเมื่อฉันมีโทเค็นการเข้าถึง FB แล้ว ฉันจะโทรไปที่ graph.facebook.com/me ปลายทางจากไคลเอนต์เพื่อรับข้อมูลผู้ใช้? - person Cloud SME; 06.02.2016
comment
คำถามสุดท้ายคือ หากโทเค็นการเข้าถึง FB หมดอายุแล้ว ฉันจะรับโทเค็นการเข้าถึงใหม่โดยใช้โทเค็นการรีเฟรชได้อย่างไร - person Cloud SME; 07.02.2016
comment
สวัสดี Queti ขณะนี้เราไม่รองรับการรีเฟรชสำหรับ Facebook เหตุผลก็คือโทเค็นที่เราได้รับจาก Facebook นั้นเป็นโทเค็นแบบขยาย ขณะนี้ยังไม่มีการสนับสนุนสำหรับการรีเฟรชโทเค็นขยาย ตรวจสอบลิงก์นี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับโทเค็นแบบขยาย: ลิงก์ . ดูเหมือนว่าเมื่อการขยายเวลาสิ้นสุดลง ผู้ใช้ของคุณจะเข้าสู่ระบบอีกครั้ง แต่ไม่ควรต้องป้อนเครดิตอีกครั้ง - person Aziel; 08.02.2016