Python後端實現蘋果ID登陸

2021-10-07 05:27:52 字數 2247 閱讀 5071

準備把應用發布到蘋果商店,坑爹的要用蘋果登陸。

使用蘋果id在手機應用上登陸會得到兩個東西,乙個是code,乙個是token。

強烈建議大家不要用這個玩意,每天只能登陸一次,真的很難除錯,如果用了這一次機會,就只能等第二天再除錯了。

需要準備的包:requests, pyjwt,cryptography(pyjwt使用es256加密方式時需要)

直接上**了:

team_id =

''bundle_id =

''key_file =

alg =

'es256'

kid =

'kdkdkdafdk'

code_url =

grand_type =

'authorization_code'

aud_url =

aud_ws =

validity_period =

180day_second =

86400

header =

payload =

private_key =

open

(key_file)

.read(

) client_sec = jwt.encode(payload=payload, key=private_key, algorithm=alg, headers=header)

.decode(

'utf-8'

) post_data =

login_req = requests.post(url=code_url, data=post_data)

.json(

)

到這裡和伺服器的互動就完成了,需要注意的以下幾個方面:

1、key的讀取直接讀取就行,不需要把裡面的部分拿出來作為key。

2、post_data裡面的code就是authorizationcode了。

得到如下這些東西:

使用者的id就在這個id_token裡,這也是乙個jwt資料,需要進行解密,其實就是前端能夠獲得到的token。最關鍵的是大家注意一下access_token後面那句話currently, no data set has been defined for access。搞到這裡我只能說呵呵了。

這個token是乙個jwt資料,廢話少說直接上**。

from jwt.algorithms import rsaalgorithm

token_url =

defdecode_jwt

(data)

:# 從蘋果那裡拿公鑰

key_req = requests.get(token_url)

.json(

)# 從data那裡拿到token的加密方式

head = jwt.get_unverified_header(data)

token_key = head[

'kid'

]# 找到相對應的公鑰,一般會發布多個公鑰

for pub_key in key_req[

'keys']:

if pub_key[

'kid'

]== token_key:

key_core = ******json.dumps(pub_key)

# 打包公鑰

key = rsaalgorithm.from_jwk(key_core)

alg = pub_key[

'alg'

]break

else

:print

('unable to find public key'

)return

none

# 使用公鑰來解密

claims = jwt.decode(data, key=key, verify=

true

, algorithms=

[alg]

, audience=bundle_id)

return claims

解出來的的資料如下,其中sub就是使用者的標識。

其實sub在前端是可以直接得到的,但是用後端驗證的方式可以提高安全性。

解token的**也可以用來解密code方法裡的的id_token。

python的selenium實現自動登陸

知道思想,參考其他文件,python的request模組和selenium模組都可以實現get cookie 和 add cookie 的功能。由於現在在學習selenium自動化測試,我選用selenium的webdriver來實現。from selenium import webdriver i...

python3 selenium實現自動登陸網頁

pycharm最好安裝專業版的,從網上搜尋 pycharm註冊碼 可以獲取到很多破解方式 pycharm安裝好後,在file檔案中找到settings.開啟後,在project pycharm中的project interpreter中找到新增,如圖所示。開啟後,搜尋 selenium 然後點選安裝...

Python程式設計 Django中介軟體實現登陸驗證

django請求處理圖 當然可以使用裝飾器,不過不利於維護,還是妥妥的使用中介軟體 設定 setting.py middleware mymiddlewares.accessauthmiddleware 放行url,不進行登入驗證 exclude url login 使用者名稱密碼 users us...