
    f-                         d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZ d	 Zd
 Zd Zd Z	 	 ddededededef
dZy)    N)	timedelta)cache)timezone)get_adapter)SocialLoginSocialToken)Provider)GRAPH_API_URLc                     |j                   j                  d      }| j                  j                  d      }t        j                  ||t
        j                        j                         }|S )Nzutf-8)	digestmod)tokenencodesecrethmacnewhashlibsha256	hexdigest)appr   msgkeyappsecret_proofs        i/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/facebook/flows.pycompute_appsecret_proofr      sQ     ++

W
%C
**

G
$ChhsC7>>BLLNO    c           	      H   t               j                         j                  t        dz   dj	                  |j                               |j                  t        |j                  |      d      }|j                          |j                         }|j                  | |      }|S )Nz/me,)fieldsaccess_tokenr   params)r   get_requests_sessiongetr
   join
get_fieldsr   r   r   raise_for_statusjsonsociallogin_from_response)requestproviderr   resp
extra_datalogins         r   complete_loginr.      s    				E!((8#6#6#89 %#:8<<#O 
 

 	 	J..w
CELr   c                    | j                   }d|j                   d}t        j                  |      }|st	               j                         j                  t        dz   |j                  |j                  dd      }|j                          |j                         }|d   }| j                         j                  dd	      }t        j                  |||
       |S )Nzallauth.facebook.app_token[]/oauth/access_tokenclient_credentials)	client_idclient_secret
grant_typer    r   APP_TOKEN_CACHE_TIMEOUTi,  )timeout)r   r3   r   r#   r   r"   r
   r   r&   r'   get_settingsset)r*   r   	cache_key	app_tokenr+   datar7   s          r   get_app_tokenr=   *   s    
,,C-cmm_A>I		)$IM!!#S 55!$%(ZZ"6   	 	yy{(	'')--.GM		)Y8r   c                 v   t        |       }t               j                         j                  t        dz   ||d      }|j                          |j                         d   }|d   st               j                  d      |d   | j                  j                  k7  s|d   st               j                  d      y )Nz/debug_token)input_tokenr   r    r<   is_validinvalid_tokenapp_id)
r=   r   r"   r#   r
   r&   r'   validation_errorr   r3   )r*   r?   r;   r+   r<   s        r   inspect_tokenrD   C   s    h'I				N*#.	J 
 

 	 	99;vD
m,,_==H~///tJ7Gm,,_== 8Hr   r*   r   	auth_type
auth_noncereturnc                 <   |j                   }t        ||       d }|dk(  rt               j                         j	                  t
        dz   |j                  |d      }|j                          |j                         }|xr ||j	                  d      k(  }	|	st               j                  d      |j                         j	                  d      rt               j                         j	                  t
        dz   d	|j                  |j                  |d
      }|j                          |j                         }|d   }|j	                  d      }
|
r*t        j                         t        t        |
            z   }t!        |||      }t#        | ||      }||_        |S )Nreauthenticatez/oauth/access_token_info)r3   r   r    rF   rA   EXCHANGE_TOKENr1   fb_exchange_token)r5   r3   r4   rK   r   
expires_in)seconds)r   r   
expires_at)r   rD   r   r"   r#   r
   r3   r&   r'   rC   r8   r   r   nowr   intr   r.   r   )r)   r*   r   rE   rF   r   rN   r+   infookrL   r   r-   s                r   verify_tokenrS   U   sw    ,,C(L)J$$M!!#S ::!$$0   	 	yy{@J$((<*@@-00AA""#34M!!#S 55"5!$%(ZZ)5	   	 	yy{N+XXl+
!)C
O*LLJC|
KE7He4EEKLr   ) rT   )r   r   datetimer   django.core.cacher   django.utilsr   allauth.socialaccount.adapterr   allauth.socialaccount.modelsr   r   $allauth.socialaccount.providers.baser	   2allauth.socialaccount.providers.facebook.constantsr
   r   r.   r=   rD   strrS    r   r   <module>r^      sq       # ! 5 A 9 L&2>, 44 4 	4
 4 4r   