
    qhv                     R    S r SSKrSSKrSSKJr  SSKJr  SSKJr   " S S	\5      r	g)
zX
LINE Login OAuth2 backend, docs at:
    https://developers.line.me/en/docs/line-login/
    N   )
AuthFailed)handle_http_errors   )
BaseOAuth2c                   z    \ rS rSrSrSrSrSr\S-   rSr	S/r
SrS	r/ S
QrSS jrS r\S 5       rS rS rS rSrg)
LineOAuth2   linez,https://access.line.me/oauth2/v2.1/authorizez%https://api.line.me/oauth2/v2.1/tokenzhttps://api.line.mez/v2/profileTprofileuserId))r   id)picture_urlr   )status_messager   )
expires_inexpire)refresh_tokenr   Nc                     U R                  5       u  p#U R                  UU R                  5       U R                  5       U R	                  5       S.$ )N)response_type	client_idredirect_uristatescope)get_key_and_secretRESPONSE_TYPEget_redirect_uriget_or_create_state	get_scope)selfr   r   client_secrets       K/var/www/html/env/lib/python3.13/site-packages/social_core/backends/line.pyauth_paramsLineOAuth2.auth_params!   sK    #'#:#:#< 	!//" 113--/^^%
 	
    c                    UR                  S5      =(       d)    UR                  S5      =(       d    UR                  S5      nUR                  S5      =(       d    UR                  S5      nUc  Ub  [        X=(       d    U5      eg )N	errorCode
statusCodeerrorerrorMessageerror_description)getr   )r   data
error_codeerror_messages       r!   process_errorLineOAuth2.process_error+   sn    HH[!PTXXl%;Ptxx?P 	 0QDHH=P4Q!]%>T#>J?? &?r$   c                    U R                  U R                  5         U R                  U R                  5       U R                  U R                  5       U R                  5       S9nU R                  U5        U R                  " US   /UQ7SU0UD6$ ! [        R                   aC  nU R                  [        R                  " UR                  R                  5      5         SnAgSnAff = f)z2Completes login process, must return user instance)methodheadersr,   access_tokenresponseN)r/   r,   request_access_tokenaccess_token_urlACCESS_TOKEN_METHODauth_headersauth_complete_paramsdo_authrequests	HTTPErrorjsonloadsr5   content)r   argskwargsr5   errs        r!   auth_completeLineOAuth2.auth_complete3   s     	499%	A00%%'//))+..0	 1 H x(<<(>B3;FL  !! 	Atzz#,,*>*>?@@	As   A1B C&#9C!!C&c                     U R                  UR                  S5      5      u  p#nUR                  S5      nUR                  S5      nUR                  S5      nUUUUUUS.$ )NdisplayNamer   
pictureUrlstatusMessage)usernamefullname
first_name	last_namer   r   )get_user_namesr+   )r   r5   rK   rL   rM   rJ   r   r   s           r!   get_user_detailsLineOAuth2.get_user_detailsG   sk    *.*=*=LL'+
'i <<)ll<0!o6  $"&,
 	
r$   c                 8    UR                  U R                  5      $ )zK
Return a unique ID for the current user, by default from
server response.
)r+   ID_KEY)r   detailsr5   s      r!   get_user_idLineOAuth2.get_user_idW   s    
 ||DKK((r$   c                      U R                  U R                  SSU 30S9nU R                  U5        U$ ! [        R                   a3  nU R                  UR
                  R                  5       5         SnAgSnAff = f)zLoads user data from serviceAuthorizationzBearer )r3   N)get_jsonUSER_INFO_URLr/   r<   r=   r5   r>   )r   r4   rA   rB   r5   rC   s         r!   	user_dataLineOAuth2.user_data^   s~    	}}""_~>V,W % H x(  !! 	s||0023	s   04 A;)A66A; )N)__name__
__module____qualname____firstlineno__nameAUTHORIZATION_URLACCESS_TOKEN_URLBASE_API_URLrY   STATE_PARAMETERDEFAULT_SCOPEREDIRECT_STATErR   
EXTRA_DATAr"   r/   r   rD   rO   rT   rZ   __static_attributes__r\   r$   r!   r	   r	      so    DF>(L =0MOKMNFJ
@ A A&
 )
r$   r	   )
__doc__r>   r<   
exceptionsr   utilsr   oauthr   r	   r\   r$   r!   <module>rn      s)   
   # & Y Yr$   