ฉันใช้โทเค็นการรีเฟรชหลายครั้งในช่วงเวลาสั้น ๆ เพื่อการทดสอบ แต่ฉันสงสัยว่าโทเค็นการรีเฟรชของ Google จะหมดอายุหรือไม่ ฉันสามารถใช้โทเค็นการรีเฟรชเดียวกันเพื่อรับโทเค็นการเข้าถึงใหม่ครั้งแล้วครั้งเล่าเป็นเวลานาน (หนึ่งสัปดาห์หรือหลายเดือน) ได้หรือไม่
ฉันใช้โทเค็นการรีเฟรชหลายครั้งในช่วงเวลาสั้น ๆ เพื่อการทดสอบ แต่ฉันสงสัยว่าโทเค็นการรีเฟรชของ Google จะหมดอายุหรือไม่ ฉันสามารถใช้โทเค็นการรีเฟรชเดียวกันเพื่อรับโทเค็นการเข้าถึงใหม่ครั้งแล้วครั้งเล่าเป็นเวลานาน (หนึ่งสัปดาห์หรือหลายเดือน) ได้หรือไม่
คำตอบ:
เซิร์ฟเวอร์ Google Auth ออกโทเค็นการรีเฟรชไม่มีวันหมดอายุนั่นคือจุดรวมของโทเค็นการรีเฟรช โทเค็นการรีเฟรชจะหมดอายุ (หรือฉันควรจะบอกว่าไม่ได้รับอนุญาต) เมื่อผู้ใช้เพิกถอนการเข้าถึงแอปพลิเคชันของคุณ
อ้างถึงเอกสารนี้โดยระบุการทำงานของโทเค็นการรีเฟรชอย่างชัดเจน
แทนที่จะออกโทเค็นที่มีอายุการใช้งานยาวนาน (โดยปกติจะใช้ได้นาน 1 ปีหรือไม่ จำกัด อายุการใช้งาน) เซิร์ฟเวอร์สามารถออกโทเค็นการเข้าถึงที่มีอายุสั้นและโทเค็นการรีเฟรชที่มีอายุการใช้งานยาวนาน ดังนั้นในระยะสั้นคุณสามารถใช้โทเค็นการรีเฟรชซ้ำแล้วซ้ำอีกจนกว่าผู้ใช้ที่อนุญาตการเข้าถึงจะเพิกถอนการเข้าถึงแอปพลิเคชันของคุณ
นี่เป็นกระทู้ที่สับสนมาก คำตอบแรกดูเหมือนจะถูก แต่จริงๆแล้วไม่ได้อ้างอิงอะไรที่เชื่อถือได้จาก google
คำตอบที่ชัดเจนที่สุดที่ฉันพบคือในสนามเด็กเล่นของนักพัฒนาที่คุณได้รับโทเค็น ขั้นตอนที่ 2 มีหมายเหตุที่ด้านล่างซึ่งระบุว่า:
"หมายเหตุ: OAuth Playground ไม่ได้จัดเก็บโทเค็นการรีเฟรช แต่เนื่องจากโทเค็นการรีเฟรชจะไม่มีวันหมดอายุผู้ใช้ควรไปที่หน้าการเข้าถึงที่ได้รับอนุญาตของบัญชี Google หากต้องการเพิกถอนด้วยตนเอง"
ฉันไม่คิดว่านั่นเป็นความจริงอย่างสมบูรณ์:
โปรดทราบว่ามีการ จำกัด จำนวนของโทเค็นการรีเฟรชที่จะออก ขีด จำกัด หนึ่งรายการต่อชุดค่าผสมไคลเอนต์ / ผู้ใช้และอีกข้อ จำกัด ต่อผู้ใช้ในไคลเอนต์ทั้งหมด คุณควรบันทึกโทเค็นการรีเฟรชในพื้นที่จัดเก็บระยะยาวและใช้ต่อไปตราบเท่าที่ยังคงใช้ได้ หากแอปพลิเคชันของคุณร้องขอโทเค็นการรีเฟรชมากเกินไปแอปพลิเคชันอาจเข้าสู่ขีด จำกัด เหล่านี้ซึ่งในกรณีนี้โทเค็นการรีเฟรชที่เก่ากว่าจะหยุดทำงาน
จากหน้านี้: https://developers.google.com/youtube/v3/guides/authentication#installed-apps
นั่นมาจากเอกสาร youTube (ซึ่งฉันคิดว่าดีกว่าเอกสาร api อื่น ๆ มาก) แต่ฉันคิดว่ามันเหมือนกันในแอป Google ทั้งหมด
ดูนี่:
โทเค็นการรีเฟรชใช้ได้จนกว่าผู้ใช้จะเพิกถอนการเข้าถึง ฟิลด์นี้จะปรากฏเฉพาะในกรณีที่ access_type = offline รวมอยู่ในคำขอรหัสการอนุญาต
ในhttps://developers.google.com/accounts/docs/OAuth2WebServer
กฎนี้มีการเปลี่ยนแปลงในช่วงปี 2017 ดังนั้นคำตอบที่ดีที่สุดที่ฉันคิดว่ามันขึ้นอยู่กับผลิตภัณฑ์ ตัวอย่างเช่นใน Gmail API โทเค็นการรีเฟรช Oauth 2.0 จะหมดอายุเมื่อเปลี่ยนรหัสผ่าน ดูhttps://support.google.com/a/answer/6328616?hl=th
เราเคยตั้งค่าการเข้าถึง API ล่วงหน้าและสร้างโทเค็นการรีเฟรชเมื่อเราตั้งค่าผู้ใช้ Gmail ใหม่จากนั้นเราสามารถเก็บอีเมลของพวกเขาได้ (เราจำเป็นต้องทำเช่นนั้นตามกฎหมาย) แต่ตอนนี้ทันทีที่พวกเขาเปลี่ยนรหัสผ่านโทเค็นการรีเฟรช ถูกเพิกถอน
บางทีสำหรับ youtube แผนที่โทเค็นการรีเฟรชยังคงมีอายุการใช้งานยาวนาน แต่สำหรับ gmail api ให้ใช้โทเค็นสั้น ๆ
แนวคิดหลักของโทเค็นการรีเฟรชคือใช้งานได้ยาวนานและไม่มีวันหมดอายุ
โทเค็นการเข้าถึงมีเวลาหมดอายุและจะหมดอายุเมื่อหมดอายุเราสามารถไปหาโทเค็นการรีเฟรชซึ่งจะถูกใช้ซ้ำแล้วซ้ำอีกจนกว่าผู้ใช้จะเพิกถอนจากบัญชีของเขา
อ่านได้จาก: https://developers.google.com/identity/protocols/oauth2#expiration คุณต้องเขียนโค้ดของคุณเพื่อคาดการณ์ความเป็นไปได้ที่โทเค็นการรีเฟรชที่ได้รับอนุญาตอาจไม่ทำงานอีกต่อไป โทเค็นการรีเฟรชอาจหยุดทำงานเนื่องจากสาเหตุเหล่านี้:
ผู้ใช้ได้เพิกถอนการเข้าถึงแอปของคุณ ไม่มีการใช้โทเค็นการรีเฟรชเป็นเวลาหกเดือน ผู้ใช้เปลี่ยนรหัสผ่านและโทเค็นการรีเฟรชมีขอบเขตของ Gmail บัญชีผู้ใช้เกินจำนวนสูงสุดของโทเค็นการรีเฟรชที่ได้รับอนุญาต (สด) ปัจจุบันมีโทเค็นการรีเฟรช จำกัด 50 โทเค็นต่อบัญชีผู้ใช้ต่อลูกค้าหนึ่งราย หากถึงขีด จำกัด การสร้างโทเค็นการรีเฟรชใหม่จะยกเลิกโทเค็นการรีเฟรชที่เก่าที่สุดโดยอัตโนมัติโดยไม่มีการเตือน ขีด จำกัด นี้ใช้ไม่ได้กับบัญชีบริการ
นอกจากนี้ยังมีการ จำกัด จำนวนโทเค็นการรีเฟรชทั้งหมดที่บัญชีผู้ใช้หรือบัญชีบริการสามารถมีได้ในไคลเอนต์ทั้งหมด ผู้ใช้ปกติส่วนใหญ่จะไม่เกินขีด จำกัด นี้ แต่อาจมีบัญชีทดสอบของนักพัฒนาซอฟต์แวร์
ฉันได้ทำการค้นคว้าเพิ่มเติมและดูเหมือนว่าโทเค็นการเข้าถึงของ Google จะถูกใช้เพื่อดึงโทเค็นการรีเฟรชในระหว่างคำขอ 'ออฟไลน์' ครั้งแรก จากจุดนี้เป็นต้นไปโทเค็นการรีเฟรชจะถูกใช้เพื่อออกโทเค็นการเข้าถึงใหม่ แนวคิดคือโทเค็นการเข้าถึงเป็นโทเค็นระยะสั้น แต่สามารถต่ออายุได้ด้วยโทเค็นการรีเฟรชในระยะยาว สิ่งนี้ขจัดความจำเป็นในการร้องขอตัวแปร "รหัส" ของ URL ซึ่งต้องใช้วิธีการปลายทางสองวิธีและต้องเริ่มต้นโดยใช้คำขออ้างอิงจากผู้อ้างอิง:
http://www.jensbits.com/2012/01/09/google-api-offline-access-using-oauth-2-0-refresh-token/
บริการ REST API บางอย่างเช่น Dropbox ออกโทเค็นการเข้าถึงที่คงอยู่ตลอดไป แต่ Google ออกโทเค็นการเข้าถึงระยะสั้น PayPal ใช้การประนีประนอมซึ่งจะช่วยให้สามารถดึงโทเค็นการเข้าถึงได้โดยไม่ต้องมีการบังคับใช้ผู้อ้างอิง URI ซึ่งหมายความว่าสามารถดึงโทเค็นการเข้าถึงได้โดยไม่ต้องคลิกที่ลิงค์เพื่อเริ่มต้นกระบวนการ วิธีการของ Google หมายความว่ารูทีน API ควรถูกเรียกเมื่อจำเป็นต้องใช้เท่านั้น โดยพื้นฐานแล้วการโทรจะเริ่มต้นผ่านขั้นตอนตามผู้อ้างอิง สิ่งนี้ถูกควบคุมโดยการออกโทเค็นการเข้าถึงที่มีอายุสั้นหรือโทเค็นการเข้าถึงที่ต้องรีเฟรชเป็นลูกโซ่ สิ่งนี้ต้องการให้นักพัฒนาคิดอย่างรอบคอบมากขึ้นว่าระบบควรทำงานอย่างไร