a
    Qx_                     @   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   f/var/www/html/Ranjet/env/lib/python3.9/site-packages/allauth/socialaccount/providers/facebook/views.pycompute_appsecret_proof   s    r   c                 C   s\   t jtj| }tjtd d|	 |j
t||dd}|  | }|| |}|S )Nz/me,)fieldsaccess_tokenr   params)r   registryby_idr   idrequestsgetr   joinZ
get_fieldsr   r   Zraise_for_statusjsonZsociallogin_from_response)requestr   r   providerresp
extra_dataloginr   r   r   fb_complete_login%   s    r1   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)r1   )selfr,   r   r"   kwargsr   r   r   complete_loginA   s    z$FacebookOAuth2Adapter.complete_loginN)__name__
__module____qualname__r   r'   Zprovider_idformatr   Zprovider_default_auth_urlr   Z	PROVIDERSr)   settingsZscope_delimiterZauthorize_urlr   Zaccess_token_urlZexpires_in_keyr7   r   r   r   r   r2   5   s   r2   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 n6 tjy } zt !d |}W Y d }~n
d }~0 0 |st"| tj|d}|S )NPOSTr"   Z	auth_typeZreauthenticatez/oauth/access_token_info)	client_idr"   r#   T)popZ
auth_nonceZEXCHANGE_TOKENr3   fb_exchange_token)Z
grant_typer>   Zclient_secretr@   r4   )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	   r1   r   r   Zstate_from_requeststater   ZRequestExceptionloggerrC   r   )r,   retZauth_exceptionZformr-   Zlogin_optionsr   r"   rB   infoZnonceokr.   r4   r   r0   er   r   r   login_by_tokenI   sd    






	

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   	getLoggerr8   rH   r   r1   r2   Zadapter_viewZoauth2_loginZoauth2_callbackrM   r   r   r   r   <module>   s$   
	

