a
    Qx_M	                     @   s   d dl Z d dlmZ d dlmZ d dlmZmZmZ d dl	m
Z
 ddlmZ ddlmZ G d	d
 d
eZG dd deZG dd deeZG dd deeZeeZeeZdS )    N)reverse)app_settings)OAuth2AdapterOAuth2CallbackViewOAuth2LoginView)build_absolute_uri   )WeixinOAuth2Client)WeixinProviderc                   @   s.   e Zd ZejZdZdZedd Z	dd Z
dS )WeixinOAuth2Adapterz1https://api.weixin.qq.com/sns/oauth2/access_tokenz&https://api.weixin.qq.com/sns/userinfoc                 C   s   |    }|dd}|S )NZAUTHORIZE_URLz,https://open.weixin.qq.com/connect/qrconnect)get_providerZget_settingsget)selfsettingsurl r   d/var/www/html/Ranjet/env/lib/python3.9/site-packages/allauth/socialaccount/providers/weixin/views.pyauthorize_url   s
    z!WeixinOAuth2Adapter.authorize_urlc           	      K   sd   | di  d}tj | j|j|dd}| }| d}|rT|dd|d< |  ||S )Nresponseopenid)Zaccess_tokenr   )paramsnicknameZraw_unicode_escapezutf-8)	r   requestsprofile_urltokenjsonencodedecoder   Zsociallogin_from_response)	r   requestappr   kwargsr   Zresp
extra_datar   r   r   r   complete_login   s    


z"WeixinOAuth2Adapter.complete_loginN)__name__
__module____qualname__r
   idprovider_idaccess_token_urlr   propertyr   r"   r   r   r   r   r      s   
r   c                   @   s   e Zd Zdd ZdS )WeixinOAuth2ClientMixinc                 C   sd   t | jjd }| jjptj}t|||d}| j }||}t	||j
|j| jj| jj||}|S )NZ	_callback)protocol)r   Zadapterr'   Zredirect_uri_protocolr   ZDEFAULT_HTTP_PROTOCOLr   r   Z	get_scoper	   Z	client_idZsecretZaccess_token_methodr(   )r   r   r   Zcallback_urlr+   providerZscopeclientr   r   r   
get_client.   s     

	z"WeixinOAuth2ClientMixin.get_clientN)r#   r$   r%   r.   r   r   r   r   r*   -   s   r*   c                   @   s   e Zd ZdS )WeixinOAuth2LoginViewNr#   r$   r%   r   r   r   r   r/   B   s   r/   c                   @   s   e Zd ZdS )WeixinOAuth2CallbackViewNr0   r   r   r   r   r1   F   s   r1   )r   Zdjango.urlsr   Zallauth.accountr   Z,allauth.socialaccount.providers.oauth2.viewsr   r   r   Zallauth.utilsr   r-   r	   r,   r
   r   objectr*   r/   r1   Zadapter_viewZoauth2_loginZoauth2_callbackr   r   r   r   <module>   s   
