支付宝三方登录
-
安装sdk
pip3 install alipay-sdk-python
- 所需导入模块
from alipay.aop.api.AlipayClientConfig import AlipayClientConfig
from alipay.aop.api.DefaultAlipayClient import DefaultAlipayClient
from alipay.aop.api.request.AlipayOpenAuthTokenAppRequest import AlipayOpenAuthTokenAppRequest,AlipayOpenAuthTokenAppModel
- 过程中可能会由于ssl证书校验而出错
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
- 使用sdk生成支付宝客户端
def get_alipay_client():
alipay_client_config = AlipayClientConfig()
alipay_client_config.app_id =
alipay_client_config.app_private_key = ""
alipay_client_config.alipay_public_key = ""
# 使用授权码换取令牌
alipay_client = DefaultAlipayClient(alipay_client_config)
return alipay_client
- 生成链接及回调信息获取
class ZFB(APIView):
def get(self,request):
# 返回支付宝登录页面
app_id =
redirect_uri = 'http://localhost:8080/result/'
url = 'https://openauth.alipaydev.com/oauth2/appToAppAuth.htm?app_id=%s&redirect_uri=%s'
return Response({
"url":url % (app_id,redirect_uri)
})
def post(self,request):
auth_code = request.data.get('app_auth_code')
print(auth_code)
zfb_client = get_alipay_client()
biz_model = AlipayOpenAuthTokenAppModel()
biz_model.grant_type = "authorization_code"
biz_model.code = auth_code
request = AlipayOpenAuthTokenAppRequest(biz_model=biz_model)
response_content = zfb_client.execute(request)
# 可以通过此处返回的response_content中的user_id进行用户三方登录的定位
print(response_content)
return Response({
'data':response_content,
})