ฉันกำลังเล่นกับการอนุญาต Oauth 2.0 ใน Facebook และรู้สึกสงสัยว่าโทเค็นการเข้าถึง Facebook จะหมดอายุหรือไม่ ถ้าเป็นเช่นนั้นมีวิธีขอโทเค็นการเข้าถึงที่มีอายุการใช้งานยาวนานหรือไม่?
ฉันกำลังเล่นกับการอนุญาต Oauth 2.0 ใน Facebook และรู้สึกสงสัยว่าโทเค็นการเข้าถึง Facebook จะหมดอายุหรือไม่ ถ้าเป็นเช่นนั้นมีวิธีขอโทเค็นการเข้าถึงที่มีอายุการใช้งานยาวนานหรือไม่?
คำตอบ:
หลังจากขุดไปรอบ ๆ ฉันก็พบสิ่งนี้ ดูเหมือนจะเป็นคำตอบ:
อัปเดต (11 / เมษายน / 2018)
ประกาศการเปลี่ยนแปลง Facebook (10/04/2018)
Facebook อัปเดตหน้าการหมดอายุโทเค็น (10/04/2018)
Offline_access: เปิดใช้งานแอปพลิเคชันของคุณเพื่อดำเนินการตามคำขอที่ได้รับอนุญาตในนามของผู้ใช้เมื่อใดก็ได้ โดยค่าเริ่มต้นโทเค็นการเข้าถึงส่วนใหญ่จะหมดอายุหลังจากช่วงเวลาสั้น ๆ เพื่อให้แน่ใจว่าแอปพลิเคชันจะส่งคำขอในนามของผู้ใช้เมื่อแอปพลิเคชันกำลังใช้งานอยู่ การอนุญาตนี้ทำให้โทเค็นการเข้าถึงที่ส่งคืนโดยจุดสิ้นสุด OAuth ของเรามีอายุการใช้งานยาวนาน
ขอค่าสิทธิ์
http://developers.facebook.com/docs/authentication/permissions
UPDATE
การอนุญาต offline_access ได้ถูกลบออกไปเมื่อไม่นานมานี้
https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
ลองใช้วิธีนี้อาจช่วยได้เต็มที่สำหรับคุณ
https://graph.facebook.com/oauth/authorize?
client_id=127605460617602&
scope=offline_access,read_stream,user_photos,user_videos,publish_stream&
redirect_uri=http://www.example.com/
ในการรับโทเค็นการเข้าถึงตลอดชีพคุณต้องใช้ scope=offline_access
ความหมายscope=offline_access
คือ: -
ช่วยให้แอปพลิเคชันของคุณดำเนินการตามคำขอที่ได้รับอนุญาตในนามของผู้ใช้ได้ตลอดเวลา โดยค่าเริ่มต้นโทเค็นการเข้าถึงส่วนใหญ่จะหมดอายุหลังจากช่วงเวลาสั้น ๆ เพื่อให้แน่ใจว่าแอปพลิเคชันจะส่งคำขอในนามของผู้ใช้เมื่อแอปพลิเคชันกำลังใช้งานอยู่ การอนุญาตนี้ทำให้โทเค็นการเข้าถึงที่ส่งคืนโดยจุดสิ้นสุด OAuth ของเรามีอายุการใช้งานยาวนาน
แต่ตามการอัปเกรดของ Facebook ในอนาคตฟังก์ชัน Offline_acees จะเลิกใช้งานตลอดไปตั้งแต่วันที่ 3 ตุลาคม 2555 เป็นต้นไปและผู้ใช้จะได้รับโทเค็นการเข้าถึงที่มีอายุการใช้งานยาวนาน 60 วันและก่อนที่โทเค็นการเข้าถึงจะหมดอายุ Facebook จะแจ้งเตือนหรือคุณสามารถกำหนดเองได้ ฟังก์ชั่นการแจ้งเตือนดึงค่าการหมดอายุจาก Facebook Api ..
โปรดทราบว่าขณะนี้ Facebook เลิกใช้งานสิทธิ์ offline_access เพื่อสนับสนุนโทเค็นซึ่งคุณสามารถขอ "อัปเกรด" ถึงวันหมดอายุได้ ตอนนี้ฉันกำลังจัดการกับเรื่องนี้ด้วยตัวเองดังนั้นฉันจึงไม่มีอะไรจะพูดอีกมาก แต่เอกสารนี้อาจช่วยได้:
https://developers.facebook.com/docs/offline-access-deprecation/
ฉันมาที่นี่ด้วยคำถามเดียวกับ OP แต่คำตอบที่แนะนำการใช้ offline_access ทำให้ฉันติดธงแดง
การรักษาความปลอดภัยการเข้าถึงบัญชี Facebook ของผู้ใช้แบบออฟไลน์นั้นมีความแตกต่างในเชิงคุณภาพและมีประสิทธิภาพมากกว่าการใช้ Facebook สำหรับการลงชื่อเพียงครั้งเดียวและไม่ควรใช้เพียงเล็กน้อย (เว้นแต่คุณจะต้องการจริงๆ) เมื่อผู้ใช้ให้สิทธิ์นี้ "แอปพลิเคชัน" จะตรวจสอบบัญชีของผู้ใช้ได้จากทุกที่ทุกเวลา ฉันใส่ "แอปพลิเคชัน" ไว้ในเครื่องหมายคำพูดเพราะเป็นเครื่องมือใด ๆ ที่มีข้อมูลรับรองคุณสามารถเขียนสคริปต์ชุดเครื่องมือทั้งหมดที่ไม่มีส่วนเกี่ยวข้องกับเว็บเซิร์ฟเวอร์ที่สามารถเข้าถึงข้อมูลใด ๆ ที่ผู้ใช้ตกลงที่จะแบ่งปันให้กับผู้ใช้ หนังสือรับรอง
ฉันจะไม่ใช้คุณสมบัตินี้เพื่อหลีกเลี่ยงอายุการใช้งานโทเค็นสั้น ๆ นั่นไม่ใช่จุดประสงค์ที่ตั้งใจไว้ แท้จริงแล้วอายุการใช้งานโทเค็นนั้นเป็นคุณลักษณะด้านความปลอดภัย ฉันยังคงมองหารายละเอียดเกี่ยวกับการใช้โทเค็นเหล่านี้อย่างเหมาะสม (ฉันจะคงอยู่ได้หรือไม่ฉันจะรักษาความปลอดภัยได้อย่างไร / ฉันจะรักษาความปลอดภัยได้อย่างไร Facebook ฝัง "โทเค็นการรีเฟรช" OAuth 2.0 ไว้ในตัวหลักหรือไม่หากไม่เป็นเช่นนั้นอยู่ที่ไหนและ / หรือฉันจะรีเฟรชได้อย่างไร) แต่ฉันค่อนข้างแน่ใจว่า offline_access ไม่ใช่วิธีที่ถูกต้อง
ใช่พวกเขาหมดอายุ มีค่า "หมดอายุ" ที่ส่งผ่านไปพร้อมกับ "access_token" และจากสิ่งที่ฉันบอกได้คือประมาณ 2 ชั่วโมง ฉันค้นหาแล้ว แต่ไม่เห็นวิธีขอเวลาหมดอายุที่นานขึ้น
เนื่องจากฉันมีปัญหาเดียวกัน - ดูโพสต์ที่ยอดเยี่ยมในหัวข้อนี้จาก ben biddington ซึ่งชี้แจงปัญหาทั้งหมดนี้ด้วยโทเค็นที่ไม่ถูกต้องและประเภทที่ถูกต้องในการส่งคำขอ
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/
คุณสามารถรีเฟรชโทเค็นการเข้าถึงของผู้ใช้ได้ทุกครั้งที่ผู้ใช้ล็อกอินเข้าสู่ไซต์ของคุณผ่าน facebook การเข้าถึงแบบออฟไลน์ไม่สามารถรับประกันได้ว่าคุณจะได้รับโทเค็นการเข้าถึงตลอดชีวิตโทเค็นการเข้าถึงจะเปลี่ยนแปลงทุกครั้งที่ผู้ใช้เพิกถอนการเข้าถึงแอปพลิเคชันของคุณหรือผู้ใช้เปลี่ยนรหัสผ่านของตน
อ้างจาก facebook http://developers.facebook.com/docs/authentication/
หมายเหตุ: หากแอปพลิเคชันไม่ได้ขอสิทธิ์ offline_access โทเค็นการเข้าถึงจะถูก จำกัด เวลา โทเค็นการเข้าถึงแบบ จำกัด เวลาจะถูกยกเลิกเมื่อผู้ใช้ออกจากระบบ Facebook หากแอปพลิเคชันได้รับสิทธิ์ offline_access จากผู้ใช้โทเค็นการเข้าถึงจะไม่มีวันหมดอายุ อย่างไรก็ตามจะไม่ถูกต้องทุกครั้งที่ผู้ใช้เปลี่ยนรหัสผ่าน
สมมติว่าคุณจัดเก็บ uid facebook ของผู้ใช้และโทเค็นการเข้าถึงไว้ในตารางผู้ใช้ในฐานข้อมูลของคุณทุกครั้งที่ผู้ใช้คลิกปุ่ม "เข้าสู่ระบบด้วย facebook" คุณจะตรวจสอบสถานะการเข้าสู่ระบบโดยใช้ facebook Javascript API จากนั้นตรวจสอบสถานะการเชื่อมต่อจากการตอบกลับ หากผู้ใช้เชื่อมต่อกับไซต์ของคุณคุณสามารถอัปเดตโทเค็นการเข้าถึงในตารางได้
กดปุ่มนี้เพื่อแลกเปลี่ยนโทเค็นการเข้าถึงชีวิตระยะสั้นสำหรับการใช้ชีวิตระยะยาว / ไม่หมดอายุ (หน้า) หนึ่ง:
https://graph.facebook.com/oauth/access_token?
client_id=APP_ID&
client_secret=APP_SECRET&
grant_type=fb_exchange_token&
fb_exchange_token=EXISTING_ACCESS_TOKEN
ลงชื่อเข้าใช้บัญชี facebook และแก้ไขการตั้งค่าแอปพลิเคชันของคุณ (บัญชี -> การตั้งค่าแอปพลิเคชัน -> การอนุญาตเพิ่มเติมของแอปพลิเคชันที่ใช้บัญชีของคุณ) ยกเลิกการเลือกสิทธิ์ (เข้าถึงข้อมูลของฉันเมื่อฉันไม่ได้ใช้แอปพลิเคชัน (offline_access)) จากนั้นใบหน้าจะออกโทเค็นใหม่เมื่อคุณลงชื่อเข้าใช้แอปพลิเคชัน
พื้นฐานโทเค็น facebook จะหมดอายุภายในหนึ่งชั่วโมง แต่คุณสามารถใช้โทเค็น 'แลกเปลี่ยน' เพื่อรับโทเค็นที่มีอายุการใช้งานยาวนาน https://developers.facebook.com/docs/facebook-login/access-tokens
GET /oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}&
client_secret={app-secret}&
fb_exchange_token={short-lived-token}
ไม่กี่ปีต่อมา แต่ Facebook Graph API Explorer มีสัญลักษณ์ข้อมูลเล็กน้อยถัดจากโทเค็นการเข้าถึงที่อนุญาตให้คุณเข้าถึงแอปเครื่องมือโทเค็นการเข้าถึงและขยายโทเค็น API เป็นเวลาสองถึงสามเดือน อาจเป็นประโยชน์ในระหว่างการพัฒนา
ตรวจสอบสิ่งต่อไปนี้เมื่อคุณโต้ตอบกับ API กราฟ facebook
1) URL การเชื่อมต่อแอปพลิเคชันควรเป็นฐานของ URL การเชื่อมต่อ "redirect_uri" ของคุณ: - www.x-minds.org/fb/connect/ redirect_uri - www.x-minds.org/fb/connect/redirect 2) "redirect_uri ของคุณ "ควรจะเหมือนกันในทั้งสองกรณี (เมื่อคุณขอรหัสยืนยันและขอ access_token) redirect_uri - www.x-minds.org/fb/connect/redirect 3) คุณควรเข้ารหัสอาร์กิวเมนต์เมื่อคุณขอ access_token 4) ไม่ควรส่งผ่านอาร์กิวเมนต์ (type = client_cred) เมื่อคุณร้องขอ access_token เซิร์ฟเวอร์การอนุญาตจะออกโทเค็นโดยไม่มีส่วนของเซสชัน เราไม่สามารถใช้โทเค็นนี้กับนามแฝง "ฉัน" ในกราฟ API โทเค็นนี้จะมีความยาว (40) แต่โทเค็นที่มีส่วนของเซสชันจะมีความยาว (81) โทเค็นการเข้าถึงที่ไม่มีส่วนของเซสชันจะใช้ได้กับบางกรณี
เช่น - https://graph.facebook.com/ ? access_token = 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM แต่ Graph API ที่มีนามแฝง "me" จะใช้ได้กับโทเค็นที่มีส่วนของเซสชันเท่านั้น
ฉันไม่รู้ว่าโทเค็นจะหมดอายุเมื่อไหร่ แต่เป็นเช่นนั้นมิฉะนั้นจะไม่มีตัวเลือกในการให้สิทธิ์แบบออฟไลน์
อย่างไรก็ตามบางครั้งการกำหนดให้ผู้ใช้ต้องให้สิทธิ์ออฟไลน์ถือเป็นการใช้งานมากเกินไป ขึ้นอยู่กับความต้องการของคุณอาจเพียงพอที่โทเค็นจะยังคงใช้ได้ตราบเท่าที่เปิดเว็บไซต์ในเบราว์เซอร์ของผู้ใช้ สำหรับสิ่งนี้อาจมีวิธีแก้ปัญหาที่ง่ายกว่า - ล็อกอินผู้ใช้ใหม่เป็นระยะโดยใช้ iframe: facebook อัตโนมัติเข้าสู่ระบบใหม่จากคุกกี้ php
ทำงานให้ฉัน ...