โทเค็นการรีเฟรชของ Google จะหมดอายุหรือไม่


111

ฉันใช้โทเค็นการรีเฟรชหลายครั้งในช่วงเวลาสั้น ๆ เพื่อการทดสอบ แต่ฉันสงสัยว่าโทเค็นการรีเฟรชของ Google จะหมดอายุหรือไม่ ฉันสามารถใช้โทเค็นการรีเฟรชเดียวกันเพื่อรับโทเค็นการเข้าถึงใหม่ครั้งแล้วครั้งเล่าเป็นเวลานาน (หนึ่งสัปดาห์หรือหลายเดือน) ได้หรือไม่


คุณใช้ทับทิมหรือคุณมีตัวอย่างโค้ดสำหรับสิ่งนั้น?
Thufir

คำตอบ:


150

เซิร์ฟเวอร์ Google Auth ออกโทเค็นการรีเฟรชไม่มีวันหมดอายุนั่นคือจุดรวมของโทเค็นการรีเฟรช โทเค็นการรีเฟรชจะหมดอายุ (หรือฉันควรจะบอกว่าไม่ได้รับอนุญาต) เมื่อผู้ใช้เพิกถอนการเข้าถึงแอปพลิเคชันของคุณ

อ้างถึงเอกสารนี้โดยระบุการทำงานของโทเค็นการรีเฟรชอย่างชัดเจน

แทนที่จะออกโทเค็นที่มีอายุการใช้งานยาวนาน (โดยปกติจะใช้ได้นาน 1 ปีหรือไม่ จำกัด อายุการใช้งาน) เซิร์ฟเวอร์สามารถออกโทเค็นการเข้าถึงที่มีอายุสั้นและโทเค็นการรีเฟรชที่มีอายุการใช้งานยาวนาน ดังนั้นในระยะสั้นคุณสามารถใช้โทเค็นการรีเฟรชซ้ำแล้วซ้ำอีกจนกว่าผู้ใช้ที่อนุญาตการเข้าถึงจะเพิกถอนการเข้าถึงแอปพลิเคชันของคุณ


6
ส่วน "ดีสำหรับปี" ทำให้ไม่ชัดเจนเท่าที่คุณแนะนำ แต่เนื่องจากดูเหมือนว่าจะไม่ก่อให้เกิดปัญหาในทางปฏิบัติฉันจึงถือว่าโทเค็นการรีเฟรชเป็นสีเขียวตลอดปี
mahemoff

54
การหมดอายุของโทเค็นคุณควรเขียนโค้ดของคุณเพื่อคาดการณ์ความเป็นไปได้ที่โทเค็นที่ได้รับจะไม่สามารถใช้งานได้อีกต่อไป โทเค็นอาจหยุดทำงานเนื่องจากสาเหตุข้อใดข้อหนึ่งเหล่านี้: ผู้ใช้ได้เพิกถอนการเข้าถึง โทเค็นไม่ได้ใช้เป็นเวลาหกเดือน บัญชีผู้ใช้มีคำขอโทเค็นเกินจำนวนที่กำหนด ปัจจุบันมีขีด จำกัด 25 โทเค็นต่อบัญชีผู้ใช้ Google หากบัญชีผู้ใช้มีโทเค็นที่ถูกต้อง 25 โทเค็นการร้องขอการตรวจสอบสิทธิ์ครั้งต่อไปจะสำเร็จ แต่จะยกเลิกโทเค็นค้างชำระที่เก่าแก่ที่สุดอย่างเงียบ ๆ โดยไม่มีคำเตือนที่ผู้ใช้มองเห็นได้ (จากdevelopers.google.com/accounts/docs/OAuth2 )
bazik

17
โทเค็นการรีเฟรช 'อายุยืน' เป็นสิ่งที่แตกต่างจาก 'ไม่มีวันหมดอายุ'
Kapé

1
ดังนั้นโค้ดของคุณจะตรวจสอบได้อย่างไรว่าโทเค็นการรีเฟรชของคุณยังใช้ได้อยู่หรือไม่?
SsjCosty

3
@Shadow หากโทเค็นการรีเฟรชแทบไม่หมดอายุตามที่แนะนำทำไม Google ไม่ออกโทเค็นการเข้าถึงที่ไม่หมดอายุในตอนแรก เท่าที่ฉันเข้าใจโทเค็นการเข้าถึงที่ออกโดยใช้ oAuth 2.0 นั้นสามารถใช้เพื่อขอโทเค็นการรีเฟรชได้ ทำไมไม่เพียงแค่มีโทเค็นการเข้าถึงแบบถาวรและตัดการเรียกพิเศษสำหรับโทเค็นการรีเฟรชออกไป
Charles Robertson

64

นี่เป็นกระทู้ที่สับสนมาก คำตอบแรกดูเหมือนจะถูก แต่จริงๆแล้วไม่ได้อ้างอิงอะไรที่เชื่อถือได้จาก google

คำตอบที่ชัดเจนที่สุดที่ฉันพบคือในสนามเด็กเล่นของนักพัฒนาที่คุณได้รับโทเค็น ขั้นตอนที่ 2 มีหมายเหตุที่ด้านล่างซึ่งระบุว่า:

"หมายเหตุ: OAuth Playground ไม่ได้จัดเก็บโทเค็นการรีเฟรช แต่เนื่องจากโทเค็นการรีเฟรชจะไม่มีวันหมดอายุผู้ใช้ควรไปที่หน้าการเข้าถึงที่ได้รับอนุญาตของบัญชี Google หากต้องการเพิกถอนด้วยตนเอง"

https://developers.google.com/oauthplayground/


2
คำตอบที่ดีที่สุดที่นี่ - ทำไมไม่มีใครโหวตถึงไม่น่าเชื่อ - ขอบคุณมาก - ปฏิบัติต่อโทเค็นการรีเฟรชราวกับว่าไม่มีวันหมดอายุ - อย่างไรก็ตามในการลงชื่อเข้าใช้ตรวจสอบการลงชื่อเข้าใช้ใหม่ในกรณีที่ผู้ใช้เพิกถอนโทเค็นการรีเฟรชในสถานการณ์นี้ Google จะให้โทเค็นการรีเฟรชใหม่ เมื่อลงชื่อเข้าใช้ดังนั้นเพียงอัปเดตโทเค็นการรีเฟรช
danday74

14

ฉันไม่คิดว่านั่นเป็นความจริงอย่างสมบูรณ์:

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

จากหน้านี้: https://developers.google.com/youtube/v3/guides/authentication#installed-apps

นั่นมาจากเอกสาร youTube (ซึ่งฉันคิดว่าดีกว่าเอกสาร api อื่น ๆ มาก) แต่ฉันคิดว่ามันเหมือนกันในแอป Google ทั้งหมด



5

กฎนี้มีการเปลี่ยนแปลงในช่วงปี 2017 ดังนั้นคำตอบที่ดีที่สุดที่ฉันคิดว่ามันขึ้นอยู่กับผลิตภัณฑ์ ตัวอย่างเช่นใน Gmail API โทเค็นการรีเฟรช Oauth 2.0 จะหมดอายุเมื่อเปลี่ยนรหัสผ่าน ดูhttps://support.google.com/a/answer/6328616?hl=th

เราเคยตั้งค่าการเข้าถึง API ล่วงหน้าและสร้างโทเค็นการรีเฟรชเมื่อเราตั้งค่าผู้ใช้ Gmail ใหม่จากนั้นเราสามารถเก็บอีเมลของพวกเขาได้ (เราจำเป็นต้องทำเช่นนั้นตามกฎหมาย) แต่ตอนนี้ทันทีที่พวกเขาเปลี่ยนรหัสผ่านโทเค็นการรีเฟรช ถูกเพิกถอน

บางทีสำหรับ youtube แผนที่โทเค็นการรีเฟรชยังคงมีอายุการใช้งานยาวนาน แต่สำหรับ gmail api ให้ใช้โทเค็นสั้น ๆ


ดูเหมือนว่าจะกลายเป็นทางการในวันที่ 5 ตุลาคม 2016 developer.googleblog.com/2016/09/…
TonyE

2

แนวคิดหลักของโทเค็นการรีเฟรชคือใช้งานได้ยาวนานและไม่มีวันหมดอายุ

โทเค็นการเข้าถึงมีเวลาหมดอายุและจะหมดอายุเมื่อหมดอายุเราสามารถไปหาโทเค็นการรีเฟรชซึ่งจะถูกใช้ซ้ำแล้วซ้ำอีกจนกว่าผู้ใช้จะเพิกถอนจากบัญชีของเขา


0

อ่านได้จาก: https://developers.google.com/identity/protocols/oauth2#expiration คุณต้องเขียนโค้ดของคุณเพื่อคาดการณ์ความเป็นไปได้ที่โทเค็นการรีเฟรชที่ได้รับอนุญาตอาจไม่ทำงานอีกต่อไป โทเค็นการรีเฟรชอาจหยุดทำงานเนื่องจากสาเหตุเหล่านี้:

ผู้ใช้ได้เพิกถอนการเข้าถึงแอปของคุณ ไม่มีการใช้โทเค็นการรีเฟรชเป็นเวลาหกเดือน ผู้ใช้เปลี่ยนรหัสผ่านและโทเค็นการรีเฟรชมีขอบเขตของ Gmail บัญชีผู้ใช้เกินจำนวนสูงสุดของโทเค็นการรีเฟรชที่ได้รับอนุญาต (สด) ปัจจุบันมีโทเค็นการรีเฟรช จำกัด 50 โทเค็นต่อบัญชีผู้ใช้ต่อลูกค้าหนึ่งราย หากถึงขีด จำกัด การสร้างโทเค็นการรีเฟรชใหม่จะยกเลิกโทเค็นการรีเฟรชที่เก่าที่สุดโดยอัตโนมัติโดยไม่มีการเตือน ขีด จำกัด นี้ใช้ไม่ได้กับบัญชีบริการ

นอกจากนี้ยังมีการ จำกัด จำนวนโทเค็นการรีเฟรชทั้งหมดที่บัญชีผู้ใช้หรือบัญชีบริการสามารถมีได้ในไคลเอนต์ทั้งหมด ผู้ใช้ปกติส่วนใหญ่จะไม่เกินขีด จำกัด นี้ แต่อาจมีบัญชีทดสอบของนักพัฒนาซอฟต์แวร์


-2

ฉันได้ทำการค้นคว้าเพิ่มเติมและดูเหมือนว่าโทเค็นการเข้าถึงของ 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 ควรถูกเรียกเมื่อจำเป็นต้องใช้เท่านั้น โดยพื้นฐานแล้วการโทรจะเริ่มต้นผ่านขั้นตอนตามผู้อ้างอิง สิ่งนี้ถูกควบคุมโดยการออกโทเค็นการเข้าถึงที่มีอายุสั้นหรือโทเค็นการเข้าถึงที่ต้องรีเฟรชเป็นลูกโซ่ สิ่งนี้ต้องการให้นักพัฒนาคิดอย่างรอบคอบมากขึ้นว่าระบบควรทำงานอย่างไร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.