U
    Z!c                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZ d dlmZmZ d dlmZmZmZ dd	lmZ dd
lmZmZmZ eeZdd Zdd ZG dd deZ e!e Z"e!e Z#dd Z$dS )    N)	timedelta)timezone)app_settings	providers)complete_social_loginrender_authentication_error)SocialLoginSocialToken)OAuth2AdapterOAuth2CallbackViewOAuth2LoginView   )FacebookConnectForm)GRAPH_API_URLGRAPH_API_VERSIONFacebookProviderc                 C   s2   |j d}| jd}tj||tjd }|S )Nzutf-8)Z	digestmod)tokenencodesecrethmacnewhashlibZsha256	hexdigest)appr   msgkeyappsecret_proof r   r/var/www/html/crackeverytest/cet_env/lib/python3.8/site-packages/allauth/socialaccount/providers/facebook/views.pycompute_appsecret_proof   s    r   c                 C   s\   t j|j| }tjtd d| |j	t
||dd}|  | }|| |}|S )Nz/me,)fieldsaccess_tokenr   params)r   registryby_idproviderrequestsgetr   joinZ
get_fieldsr   r   Zraise_for_statusjsonZsociallogin_from_response)requestr   r   r'   resp
extra_dataloginr   r   r   fb_complete_login%   s    r0   c                   @   sN   e Zd ZejZdeZe	j
ei ZdZedeZed ZdZdd ZdS )	FacebookOAuth2Adapterz(https://www.facebook.com/{}/dialog/oauthr    ZAUTHORIZE_URL/oauth/access_token
expires_inc                 K   s   t |||S )N)r0   )selfr,   r   r"   kwargsr   r   r   complete_loginA   s    z$FacebookOAuth2Adapter.complete_loginN)__name__
__module____qualname__r   idZprovider_idformatr   Zprovider_default_auth_urlr   Z	PROVIDERSr)   settingsZscope_delimiterZauthorize_urlr   Zaccess_token_urlZexpires_in_keyr6   r   r   r   r   r1   5   s   r1   c              
   C   s  d }d }| j dkrt| j}| rz,tjtj| }|	| }|
| }|jd }d }|ddkrtjtd |j|dd }	|j| dd	}
|
o|
|	d
k}nd}|r| drtjtd d|j|j|dd }|d }|d}|rt tt|d }|rTt|||d}t| ||}||_t| |_t| |}W n4 tjk
r } zt !d |}W 5 d }~X Y nX |st"| tj|d}|S )NPOSTr"   Z	auth_typeZreauthenticatez/oauth/access_token_info)	client_idr"   r#   T)popZ
auth_nonceZEXCHANGE_TOKENr2   fb_exchange_token)Z
grant_typer>   Zclient_secretr@   r3   )seconds)r   r   
expires_atzError accessing FB user profile)	exception)#methodr   r=   Zis_validr   r%   r&   r   r:   Zget_fb_login_optionsZget_appZcleaned_datar)   r(   r   r>   r+   Z	get_nonceZget_settingsr   r   nowr   intr	   r0   r   r   Zstate_from_requeststater   ZRequestExceptionloggerrC   r   )r,   retZauth_exceptionZformr'   Zlogin_optionsr   r"   rB   infoZnonceokr-   r3   r   r/   er   r   r   login_by_tokenI   sl    






	
  
  rM   )%r   r   loggingr(   datetimer   Zdjango.utilsr   Zallauth.socialaccountr   r   Zallauth.socialaccount.helpersr   r   Zallauth.socialaccount.modelsr   r	   Z,allauth.socialaccount.providers.oauth2.viewsr
   r   r   Zformsr   r'   r   r   r   	getLoggerr7   rH   r   r0   r1   Zadapter_viewZoauth2_loginZoauth2_callbackrM   r   r   r   r   <module>   s$   
	

