和朋友一起做了个小应用,考虑到方便起见,直接使用了微信登陆,这样也方便了用户。
微信登陆的方式比较简单,前端拉起微信,得到一个code,后端将app_id和app_secret加上这个code一起传到微信服务器,服务器返回一个open_id,access_token和refresh_token,用这个accesss_token就可以得到用户昵称头像等信息。这个open_id可以作为一个用户标识。
准备把应用发布到苹果商店,坑爹的要用苹果登陆。
使用苹果ID在手机应用上登陆会得到两个东西,一个是Code,一个是Token。
在登陆的时候我们想当然的微信类似,用这个code来进行登陆,谁知道掉进了一个大坑。
Code
强烈建议大家不要用这个玩意,每天只能登陆一次,真的很难调试,如果用了这一次机会,就只能等第二天再调试了。
先说一下前期准备,需要TeamID,BundleID, 私钥,然后在平台里面要点上允许登陆。
官方链接:https://developer.apple.com/documentation/sign_in_with_apple/generate_and_validate_tokens
这里app id其实就是bundle id,用的名称不统一,光这个玩意就折腾了大半天。
需要准备的包:requests, pyjwt,cryptography(pyjwt使用ES256加密方式时需要)
直接上代码了:
TEAM_ID = ''
BUNDLE_ID = ''
KEY_FILE = '/home/stamp/app/apple/AuthKey_KDKDKKDKF.p8'
ALG = 'ES256'
KID = 'KDKDKDAFDK'
CODE_URL = 'https://appleid.apple.com/auth/token'
GRAND_TYPE = 'authorization_code'
AUD_URL = 'https://appleid.apple.com'
AUD_WS = 'appleid.apple.com'
VALIDITY_PERIOD = 180
DAY_SECOND = 86400
header = {
'alg': ALG, 'kid'