Hub Python Library documentation

OAuth ve FastAPI

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

OAuth ve FastAPI

OAuth, kullanıcı kimlik bilgilerini ifşa etmeden uygulamalara sınırlı erişim izni verilmesi için yaygın olarak kullanılan, erişim devri için açık bir standarttır. FastAPI ile birleştirildiğinde, kullanıcıların Google veya GitHub gibi harici kimlik sağlayıcıları kullanarak oturum açmasına izin veren güvenli API'ler oluşturmanızı sağlar. Tipik bir senaryoda:

  • FastAPI, API uç noktalarını tanımlar ve HTTP isteklerini işler.
  • OAuth, fastapi.security gibi kütüphaneler veya Authlib gibi harici araçlar kullanılarak entegre edilir.
  • Bir kullanıcı oturum açmak istediğinde, FastAPI onu OAuth sağlayıcısının oturum açma sayfasına yönlendirir.
  • Başarılı girişten sonra sağlayıcı, bir belirteçle geri yönlendirir.
  • FastAPI bu belirteci doğrular ve kullanıcıyı yetkilendirmek veya kullanıcı profil verilerini almak için kullanır.

Bu yaklaşım, parolaların doğrudan işlenmesini önlemeye ve kimlik yönetimini güvenilir sağlayıcılara devretmeye yardımcı olur.

FastAPI'de Hugging Face OAuth Entegrasyonu

Bu modül, Hugging Face OAuth'ı bir FastAPI uygulamasına entegre etmek için araçlar sağlar. Hugging Face platformunu kullanarak kullanıcı kimlik doğrulamasını, yerel geliştirme için sahte (mocked) davranışı ve Spaces için gerçek OAuth akışını mümkün kılar.

OAuth Genel Bakış

attach_huggingface_oauth işlevi, FastAPI uygulamanıza giriş, çıkış ve geri bildirim uç noktaları ekler. Bir Space içinde kullanıldığında Hugging Face OAuth sistemine bağlanır. Yerel olarak kullanıldığında sahte bir kullanıcı enjekte eder. Space'inize HF ile Giriş Yap seçeneği ekleme hakkında daha fazla bilgi edinmek için buraya tıklayın

Nasıl kullanılır?

from huggingface_hub import attach_huggingface_oauth, parse_huggingface_oauth
from fastapi import FastAPI, Request

app = FastAPI()
attach_huggingface_oauth(app)

@app.get("/")
def greet_json(request: Request):
    oauth_info = parse_huggingface_oauth(request)
    if oauth_info is None:
        return {"msg": "Not logged in!"}
    return {"msg": f"Hello, {oauth_info.user_info.preferred_username}!"}

Ayrıca OAuth'ın pratikte nasıl çalıştığını gösteren bir örnek de ilginizi çekebilir. Daha kapsamlı bir uygulama için, HF OAuth'ı tam ölçekli bir uygulamada uygulayan medoidai/GiveBackGPT Space'ine göz atın.

attach_huggingface_oauth

huggingface_hub.attach_huggingface_oauth

< >

( app: fastapi.FastAPIroute_prefix: str = '/' )

OAuth girişini Hugging Face ile etkinleştirmek için bir FastAPI uygulamasına OAuth uç noktaları ekleyin.

Nasıl kullanılır:

  • OAuth uç noktalarını eklemek için bu yöntemi FastAPI uygulamanızda çağırın.
  • Rota işleyicilerinizin içinde, OAuth bilgilerini almak için parse_huggingface_oauth(request) fonksiyonunu çağırın.
  • Kullanıcı oturum açmışsa, kullanıcının bilgilerini içeren bir OAuthInfo nesnesi döndürülür. Aksi halde None döndürülür.
  • Uygulamanızda, kullanıcının giriş ve çıkış yapması için /oauth/huggingface/login ve /oauth/huggingface/logout bağlantılarını eklediğinizden emin olun.

Örnek:

from huggingface_hub import attach_huggingface_oauth, parse_huggingface_oauth

# Create a FastAPI app
app = FastAPI()

# Add OAuth endpoints to the FastAPI app
attach_huggingface_oauth(app)

# Add a route that greets the user if they are logged in
@app.get("/")
def greet_json(request: Request):
    # Retrieve the OAuth info from the request
    oauth_info = parse_huggingface_oauth(request)  # e.g. OAuthInfo dataclass
    if oauth_info is None:
        return {"msg": "Not logged in!"}
    return {"msg": f"Hello, {oauth_info.user_info.preferred_username}!"}

parse_huggingface_oauth

huggingface_hub.parse_huggingface_oauth

< >

( request: fastapi.Request )

Giriş yapılmış bir kullanıcının bilgilerini bir OAuthInfo nesnesi olarak döndürür.

Esneklik ve geleceğe hazırlık amacıyla bu yöntem ayrıştırma konusunda oldukça esnektir ve hata yükseltmez. Eksik alanlar, bir uyarı verilmeden None olarak ayarlanır.

Kullanıcı oturum açmamışsa (oturum çerezi bilgisi yoksa) None döndürün.

Bu yöntemin nasıl kullanılacağına dair bir örnek için attach_huggingface_oauth() bölümüne bakın.

OAuthOrgInfo

sınıf huggingface_hub.OAuthOrgInfo

< >

( sub: strname: strpreferred_username: strpicture: strplan: str | None = Nonecan_pay: bool | None = Nonerole_in_org: str | None = Nonesecurity_restrictions: list[typing.Literal['ip', 'token-policy', 'mfa', 'sso']] | None = None )

Parametreler

  • sub (str) — Örgütün benzersiz tanımlayıcısı. OpenID Connect alanı.
  • name (str) — Organizasyonun tam adı. OpenID Connect alanı.
  • preferred_username (str) — Organizasyonun kullanıcı adı. OpenID Connect alanı.
  • picture (str) — Organizasyonun profil fotoğrafı URL'si. OpenID Connect alanı.
  • plan (str, isteğe bağlı) — Organizasyonun planı (ör. “enterprise”, “team”). Hugging Face alanı.
  • can_pay (Optional[bool], isteğe bağlı) — Organizasyonun bir ödeme yöntemi ayarlayıp ayarlamadığı. Hugging Face alanı.
  • role_in_org (Optional[str], isteğe bağlı) — Kullanıcının organizasyondaki rolü. Hugging Face alanı.
  • security_restrictions (Optional[list[Literal["ip", "token-policy", "mfa", "sso"]]], isteğe bağlı) — Kullanıcının bu kuruluş için tamamlamadığı güvenlik kısıtlamalarının dizisi. Olası değerler: “ip”, “token-policy”, “mfa”, “sso”. Hugging Face alanı.

OAuth ile oturum açmış bir kullanıcıya bağlı bir kuruluş hakkında bilgi.

OAuthUserInfo

sınıf huggingface_hub.OAuthUserInfo

< >

( sub: strname: strpreferred_username: stremail_verified: bool | Noneemail: str | Nonepicture: strprofile: strwebsite: str | Noneis_pro: boolcan_pay: bool | Noneorgs: list[huggingface_hub._oauth.OAuthOrgInfo] | None )

Parametreler

  • sub (str) — Kullanıcının benzersiz tanımlayıcısı, yeniden adlandırma durumunda bile. OpenID Connect alanı.
  • name (str) — Kullanıcının tam adı. OpenID Connect alanı.
  • preferred_username (str) — Kullanıcının kullanıcı adı. OpenID Connect alanı.
  • email_verified (Optional[bool], isteğe bağlı) — Kullanıcının e-posta adresinin doğrulanıp doğrulanmadığını belirtir. OpenID Connect alanı.
  • email (Optional[str], isteğe bağlı) — Kullanıcının e-posta adresi. OpenID Connect alanı.
  • picture (str) — Kullanıcının profil fotoğrafı URL'si. OpenID Connect alanı.
  • profile (str) — Kullanıcının profil URL'si. OpenID Connect alanı.
  • website (Optional[str], isteğe bağlı) — Kullanıcının web sitesi URL'si. OpenID Connect alanı.
  • is_pro (bool) — Kullanıcının pro kullanıcısı olup olmadığı. Hugging Face alanı.
  • can_pay (Optional[bool], isteğe bağlı) — Kullanıcının bir ödeme yöntemi ayarlayıp ayarlamadığı. Hugging Face alanı.
  • orgs (Optional[list[OrgInfo]], isteğe bağlı) — Kullanıcının üye olduğu kuruluşların listesi. Hugging Face alanı.

OAuth ile oturum açmış bir kullanıcı hakkında bilgi.

OAuthInfo

sınıf huggingface_hub.OAuthInfo

< >

( access_token: straccess_token_expires_at: datetimeuser_info: OAuthUserInfostate: str | Nonescope: str )

Parametreler

  • access_token (str) — Erişim belirteci.
  • access_token_expires_at (datetime.datetime) — Erişim jetonunun son kullanma tarihi.
  • user_info (OAuthUserInfo) — Kullanıcı bilgileri.
  • state (str, isteğe bağlı) — OAuth sağlayıcısına, OAuth sağlayıcısına yapılan orijinal istekte iletilen durum.
  • scope (str) — Verilen kapsam.

OAuth oturum açma bilgileri.

Update on GitHub