
    Tњh4                      &   S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJrJrJr  S SKJrJrJrJr  S SKJ r   S SK!J"r"  S SK#J$r$  S SK%J&r&  SSK'J(r(   " S S\5      r) " S S\$5      r*\*/r+g)    N)quote)REDIRECT_FIELD_NAME)	get_token)render_to_string)reverse)get_random_string)escapejs)EmailAddress)get_adapter)QUERY_EMAIL)
AuthActionAuthProcessProviderAccount)GRAPH_API_VERSIONNONCE_LENGTHNONCE_SESSION_KEYPROVIDER_ID)FacebookOAuth2Adapter)OAuth2Error)OAuth2Provider)import_callable   )get_default_locale_callablec                       \ rS rSrS rSrg)FacebookAccount"   c                 L    U R                   R                  R                  S5      $ )Nlink)account
extra_datagetselfs    lD:\Anime\Ugyen\janka_web_project\venv\Lib\site-packages\allauth/socialaccount/providers/facebook/provider.pyget_profile_urlFacebookAccount.get_profile_url#   s    ||&&**622     N)__name__
__module____qualname____firstlineno__r%   __static_attributes__r(   r'   r$   r   r   "   s    3r'   r   c                      ^  \ rS rSr\rSr\r\	r
SrSrSrU 4S jrS rU 4S jrS	 rS
 rS rS rU 4S jrS rS rS rS rSS jrS rS rS rS\4S jrSr U =r!$ )FacebookProvider'   FacebookTzhttps://www.facebook.comz;https://limited.facebook.com/.well-known/oauth/openid/jwks/c                 4   > S U l         [        TU ]  " U0 UD6  g N)_locale_callable_cachesuper__init__)r#   argskwargs	__class__s      r$   r6   FacebookProvider.__init__5   s    &*#$)&)r'   c                 B    U R                  5       R                  SS5      $ )NMETHODoauth2get_settingsr!   r"   s    r$   
get_methodFacebookProvider.get_method9   s      "&&x::r'   c           	      N  > UR                  SU R                  5       5      nUS:X  a  S[        UR                  [        5      =(       d    S5      -  nS[        UR                  S5      =(       d    [
        R                  5      -  nS[        UR                  S5      =(       d    [        R                  5      -  nS[        UR                  SS5      5      -  nSU< S	U< S	U< S	U< S
3	nS[        U5      < 3n	U	$ US:X  a  [        [        U ]2  " U40 UD6n	U	$ [        SU-  5      e)Nmethodjs_sdkz'%s' processactionscopezallauth.facebook.login(z, )zjavascript:r=   zInvalid method specified: %s)popr@   r	   r!   r   r   LOGINr   AUTHENTICATEr   r5   r/   get_login_urlRuntimeError)r#   requestr8   rC   nextrF   rG   rH   jsretr9   s             r$   rM   FacebookProvider.get_login_url<   s   Hdoo&78XHVZZ0C%D%JKKDx

9(=(RARARSSGhvzz(';'Vz?V?VWWFXfjj"&=>>E	B &+2Y0C
 
	 x($=gPPC 
 =FGGr'   c                 |    U R                  5       nUR                  S5      nU(       a  [        U5      $ [        5       $ )NLOCALE_FUNC)r?   r!   r   r   )r#   settingsfuncs      r$   _get_locale_callable%FacebookProvider._get_locale_callableP   s4    $$&||M*(,t$O2M2OOr'   c                 p    U R                   (       d  U R                  5       U l         U R                  U5      $ r3   )r4   rX   )r#   rO   s     r$   get_locale_for_request'FacebookProvider.get_locale_for_requestU   s-    ***.*C*C*ED'**733r'   c                 B    / n[         (       a  UR                  S5        U$ )Nemail)r   append)r#   rH   s     r$   get_default_scope"FacebookProvider.get_default_scopeZ   s    ;LL!r'   c                 N    U R                  5       n/ SQnUR                  SU5      $ )N)idr^   name
first_name	last_nameverifiedlocaletimezoner   genderupdated_timeFIELDSr>   )r#   rV   default_fieldss      r$   
get_fieldsFacebookProvider.get_fields`   s*    $$&
 ||Hn55r'   c                    > [         TU ]  X5      nU[        R                  :X  a  SUS'   U$ U[        R                  :X  a  SUS'   U$ )Nreauthenticate	auth_type	rerequest)r5   get_auth_params_from_requestr   REAUTHENTICATE	REREQUEST)r#   rO   rG   rR   r9   s       r$   rt   -FacebookProvider.get_auth_params_from_requestq   sP    g27CZ.../C 
 z+++*C
r'   c                     UR                   [        S.nU R                  5       nUR                  UR	                  S0 5      5        U$ )N)appIdversionINIT_PARAMS)	client_idr   r?   updater!   )r#   rO   appinit_paramsrV   s        r$   get_init_params FacebookProvider.get_init_paramsy   s>     #:KL$$&8<<r:;r'   c                     U R                  US5      nSR                  U R                  U5      5      US'   UR                  S5      S:X  a  U R	                  USS9US'   U$ )	Nauthenticate,rH   rr   rq   T)	or_create
auth_nonce)rt   joinget_scope_from_requestr!   	get_nonce)r#   rO   rR   s      r$   get_fb_login_options%FacebookProvider.get_fb_login_options   s_    //Hxx ; ;G DEG77;#33 $w$ GC
r'   c                    U R                  5       nUR                  SS5      n[        R                  " 5       R	                  U5       Vs/ s H  oDS   c  M
  US   PM     nnSU;   a   U R                  U5      nUR                  US9nU$ s  snf )NSDK_URLz&//connect.facebook.net/{locale}/sdk.jsr   rh   )rh   )r?   r!   string	Formatterparser[   format)r#   rO   rV   sdk_urltupfield_namesrh   s          r$   get_sdk_urlFacebookProvider.get_sdk_url   s    $$&,,y*RS$..066w?
?sq6FCF? 	 
 {"009FnnFn3G
s   		B		B	c                   ^ U R                  5       S:w  a  gU4S jnU R                  R                  [        U R	                  T5      U R                  TU R                  5      U R                  T5      U" S5      U" S5      U" S5      TR                  U R                  TSS95      U" S	5      [        T5      S
.nSU0n[        SUTS9$ )NrD   rE   c                 8   > TR                  [        U 5      5      $ r3   )build_absolute_urir   )rd   rO   s    r$   abs_uri*FacebookProvider.media_js.<locals>.abs_uri   s    --gdm<<r'   facebook_login_by_tokensocialaccount_login_cancelledaccount_logoutr=   )rC   socialaccount_login_error)ry   rz   sdkUrl
initParamsloginOptionsloginByTokenUrl	cancelUrl	logoutUrlloginUrlerrorUrl	csrfTokenfb_datazfacebook/fbconnect.html)rO   )r@   r~   r|   r   r   r   r   r   rM   r   r   )r#   rO   r   r   ctxs    `   r$   media_jsFacebookProvider.media_js   s    ??(	= XX''(&&w/..wA 55g>&'@A !@A !1222""78"<   ;<"7+
 '" 93PPr'   c                     U(       a!  UR                   R                  [        S 5      nOUR                   R                  [        5      nU(       d(  U(       a!  [	        [
        5      nXAR                   [        '   U$ r3   )sessionrJ   r   r!   r   r   )r#   rO   r   rJ   nonces        r$   r   FacebookProvider.get_nonce   sR    OO''(94@EOO''(9:E%l3E16OO-.r'   c                     US   $ )Nrc   r(   r#   datas     r$   extract_uidFacebookProvider.extract_uid   s    Dzr'   c           	          [        UR                  S5      UR                  S5      UR                  S5      UR                  S5      UR                  S5      S9$ )Nr^   usernamere   rf   rd   )r^   r   re   rf   rd   )dictr!   r   s     r$   extract_common_fields&FacebookProvider.extract_common_fields   sK    ((7#XXj)xx-hh{+&!
 	
r'   c                 n    / nUR                  S5      nU(       a  UR                  [        USSS95        U$ )Nr^   FT)r^   rg   primary)r!   r_   r
   )r#   r   rR   r^   s       r$   extract_email_addresses(FacebookProvider.extract_email_addresses   s4    ! JJ|%%NO
r'   tokenc                    SSK Jn  UR                  S5      nUR                  S5      n[        XE/5      (       d  [	        5       R                  S5      e U(       a  UR                  XU5      $ U(       d   eUR                  XU5      $ ! [        [        R                  4 a  n[	        5       R                  S5      UeSnAff = f)z
Verifies both normal oAuth2-style "access_token"s as well
as OIDC-style "Limited Login" JWTs.

Limited Login is an OIDC-based form of Facebook Login
that their iOS SDK uses when App Tracking Transparency consent is denied.
r   )flowsaccess_tokenid_tokeninvalid_tokenN)(allauth.socialaccount.providers.facebookr   r!   anyr   validation_errorverify_tokenverify_limited_login_tokenr   requestsRequestException)r#   rO   r   r   r   r   es          r$   r   FacebookProvider.verify_token   s     	Cyy099Z(L+,,-00AA	I))'FFx77xPPX667 	I-00AqH	Is   B -B C"B<<C)r4   )FF)"r)   r*   r+   r,   r   rc   rd   r   account_classr   oauth2_adapter_classsupports_token_authentication!limited_login_expected_jwt_issuerlimited_login_jwks_urlr6   r@   rM   rX   r[   r`   rn   rt   r   r   r   r   r   r   r   r   r   r   r-   __classcell__)r9   s   @r$   r/   r/   '   s    	BD#M0$(! )C%E *;(P
4
6"	Q2
I4 I Ir'   r/   ),r   r   urllib.parser   django.contrib.authr   django.middleware.csrfr   django.template.loaderr   django.urlsr   django.utils.cryptor   django.utils.htmlr	   allauth.account.modelsr
   allauth.socialaccount.adapterr   "allauth.socialaccount.app_settingsr   $allauth.socialaccount.providers.baser   r   r   2allauth.socialaccount.providers.facebook.constantsr   r   r   r   .allauth.socialaccount.providers.facebook.viewsr   -allauth.socialaccount.providers.oauth2.clientr   /allauth.socialaccount.providers.oauth2.providerr   allauth.utilsr   rh   r   r   r/   provider_classesr(   r'   r$   <module>r      sw       3 , 3  1 & / 5 : 
  Q E J ) /3o 3
yI~ yIx %% r'   