o
    gëfº	  ã                   @   sÀ   d Z ddlmZ zddlZW n ey-   zddlZW n ey*   ddlmZ Y nw Y nw ddlmZm	Z	 ddl
mZ dZde Zd	e Zd
e ZG dd„ deƒZG dd„ de	ƒZdeiZdS )an  
Weibo OAuth2 support.

This script adds support for Weibo OAuth service. An application must
be registered first on http://open.weibo.com.

WEIBO_CLIENT_KEY and WEIBO_CLIENT_SECRET must be defined in the settings.py
correctly.

By default account id,profile_image_url,gender are stored in extra_data field,
check OAuthBackend class for details on how to extend it.
é    )Ú	urlencodeN)Ú
simplejson)ÚOAuthBackendÚ
BaseOAuth2)Údsa_urlopenzapi.weibo.comzhttps://%s/oauth2/request_tokenzhttps://%s/oauth2/access_tokenzhttps://%s/oauth2/authorizec                   @   s,   e Zd ZdZdZg d¢Zdd„ Zdd„ ZdS )	ÚWeiboBackendz,Weibo (of sina) OAuth authentication backendÚweibo))Úidr	   )ÚnameÚusername)Úprofile_image_urlr   )Úgenderr   c                 C   s   |d S )NÚuid© )ÚselfÚdetailsÚresponser   r   úc/var/www/html/humari/django-venv/lib/python3.10/site-packages/social_auth/backends/contrib/weibo.pyÚget_user_id.   s   zWeiboBackend.get_user_idc                 C   s   |  dd¡|  dd¡dœS )z„Return user details from Weibo. API URL is:
        https://api.weibo.com/2/users/show.json/?uid=<UID>&access_token=<TOKEN>
        r
   Ú Úscreen_name)r   Ú
first_name)Úget)r   r   r   r   r   Úget_user_details1   s   

ÿzWeiboBackend.get_user_detailsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   Ú
EXTRA_DATAr   r   r   r   r   r   r   #   s    r   c                   @   s4   e Zd ZdZeZeZeZ	e
ZdZdZdZdd„ ZdS )Ú	WeiboAuthz$Weibo OAuth authentication mechanismÚWEIBO_CLIENT_KEYÚWEIBO_CLIENT_SECRETFc              
   O   sX   |  di ¡  d¡}||dœ}dt|ƒ }z
t t|ƒ ¡ ¡W S  tttfy+   Y d S w )Nr   r   )Úaccess_tokenr   z(https://api.weibo.com/2/users/show.json?)	r   r   r   Úloadsr   ÚreadÚ
ValueErrorÚKeyErrorÚIOError)r   r"   ÚargsÚkwargsr   ÚdataÚurlr   r   r   Ú	user_dataC   s   
ÿzWeiboAuth.user_dataN)r   r   r   r   ÚWEIBO_AUTHORIZATION_URLÚAUTHORIZATION_URLÚWEIBO_REQUEST_TOKEN_URLÚREQUEST_TOKEN_URLÚWEIBO_ACCESS_TOKEN_URLÚACCESS_TOKEN_URLr   ÚAUTH_BACKENDÚSETTINGS_KEY_NAMEÚSETTINGS_SECRET_NAMEÚREDIRECT_STATEr,   r   r   r   r   r   9   s    r   r   )r   Úurllibr   Újsonr   ÚImportErrorÚdjango.utilsÚsocial_auth.backendsr   r   Úsocial_auth.utilsr   ÚWEIBO_SERVERr/   r1   r-   r   r   ÚBACKENDSr   r   r   r   Ú<module>   s,   ÿ€ýÿ