o
    iX                     @   sL   d Z ddlmZmZmZ ddlmZmZmZ erddl	Z	G dd deZ
dS )zFacebook SSO Login Helper.    )TYPE_CHECKINGClassVarOptional)DiscoveryDocumentOpenIDSSOBaseNc                   @   sR   e Zd ZU dZdZdZdgZeed< de	fddZ
dd
eded defddZd	S )FacebookSSOz)Class providing login via Facebook OAuth.Zfacebookz https://graph.facebook.com/v19.0emailscopereturnc                    s   d| j  d| j  ddS )z#Get document containing handy urls.z*https://www.facebook.com/v9.0/dialog/oauthz/oauth/access_tokenz5/me?fields=id,name,email,first_name,last_name,picture)Zauthorization_endpointZtoken_endpointZuserinfo_endpoint)base_url)self r   O/home/app/Keep/.python/lib/python3.10/site-packages/fastapi_sso/sso/facebook.pyget_discovery_document   s
   

z"FacebookSSO.get_discovery_documentNresponsesessionzhttpx.AsyncClientc                    sP   t |d|d|d|d| j|d|di di dd	d
S )z9Return OpenID from user information provided by Facebook.r	   
first_name	last_namenameidpicturedataurlN)r	   r   r   Zdisplay_nameproviderr   r   )r   getr   )r   r   r   r   r   r   openid_from_response   s   z FacebookSSO.openid_from_response)N)__name__
__module____qualname____doc__r   r   r
   r   __annotations__r   r   dictr   r   r   r   r   r   r   r      s   
  r   )r    typingr   r   r   Zfastapi_sso.sso.baser   r   r   Zhttpxr   r   r   r   r   <module>   s    