Python authlib şişesi - yenileme belirteci nasıl kullanılır?
Şimdiye kadar giriş yapmak için sadece oauth2'ye ihtiyacım var, ancak makul bir şekilde tamamlanmış olması için uygulamamın yine de yenileme belirteçlerini işlemesi gerektiğini düşünüyorum.
Oauth konusunda oldukça yeniyim, işte anladığım kadarıyla:
Erişim belirtecinin ömrünü kısa tutarak, ancak belirteç ömrünü uzatarak, istemciyi erişim belirtecini yenilemek için düzenli olarak "check-in" yapmaya zorlarsınız ve böylece daha fazla kontrol sağlarsınız.
Ama bunu authlib ve flask entegrasyonu kullanarak nasıl yapmalı?
FlaskRemoteApp üzerinde yenileme_token () yok gibi görünüyor ve bunu gösteren herhangi bir örnek kod bulamadım.
Bu yeni bir jeton almak için çalışıyor gibi görünüyor
res = oauth.myOauth2.fetch_access_token(refresh_token=session['tok_res']['refresh_token'])
session['tok_res'].update(res)
Ancak daha sonra bir api çağrısı için yeni access_token kullanıldığında başarısız olur.
Sanırım bir sunucu hatası olabilir veya yenisini kullanmadan önce eski jetonun süresinin dolmasını beklemem gerekiyor olabilir mi? Expires_at süresi, güncellenmeye devam ediyor ve bu durumda bu bana mantıklı gelmiyor.
Biri yenileme_token'ın authlib ve flask ile nasıl kullanılacağını açıklayabilirse harika olurdu.
Yanıtlar
Kaldırmadığı sürece, @lepture ile düşer cevap, ben en azından var bir cevap. Aramamda eksik kaldım. Yani bu artık benim için beklendiği gibi çalışıyor.grant_type='refresh_token'
if session['oatoken']['expires_at'] - 2 < now: # refresh 2 seconds early
oatoken = oauth.myOauth2.fetch_access_token(
refresh_token=session['oatoken']['refresh_token'],
grant_type='refresh_token')
session['oatoken'].update(oatoken)
Kayıt defterinde update_token işlevini ayarlayarak biraz oynadım, ancak çalışmasını sağlayamadım. Her durumda, bunun yalnızca belirteci kullanan bir api çağrısı "süresi dolmuş belirteç" yanıtı alırsa tetiklendiğine inanıyorum. Benim durumumda, oturum açmak için sadece Oauth kullanıyorum, bu yüzden sadece sona erme saatini izleyebilir ve yalnızca gerektiğinde kimlik doğrulama sunucusuna basabilirim.