不止美國,谷歌在澳韓印等地也面臨反壟斷訴訟
阿新 • • 發佈:2020-10-12
1.微博繫結使用者介面
1.1 oauth/urls.py 中新增路由
1 2 3 4 |
urlpatterns = [
path( 'weibo/binduser/' , views.OauthWeiboBindUser.as_view()), #
/ oauth / weibo / callback /
]
|
1.2 oauth/views.py 中新增試圖函式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
class OauthWeiboBindUser(APIView):
permission_classes = (AllowAny,)
def post( self , request):
# 繫結使用者, 1. 已註冊使用者, 2. 未註冊使用者
# 1.1 獲取使用者名稱, 密碼, weibo_uid
username = request.data.get( 'username' )
password = request.data.get( 'password' )
weibo_uid = request.data.get( 'weibo_uid' )
if not all ([username, password, weibo_uid]):
return Response({ 'code' : 999 , 'msg' : '引數不全' })
# 0.判斷是否存在此使用者
try :
user = User.objects.get(username = username)
except Exception as e:
user = None
# 1. 已註冊使用者
if user:
# 1.2 , 如果存在就驗證 密碼, 驗證通過,就繫結, 返回token,登入成功
if user.check_password(password):
ou = OauthUser(uid = weibo_uid, user = user, oauth_type = '1' )
ou.save()
payload = jwt_payload_handler(user) # 通過user物件獲取到jwt的
payload資訊
token = jwt_encode_handler(payload) # 生成token
data = jwt_response_payload_handler(token, user)
data[ 'type' ] = '0' # 指定為登入成功
return Response({ 'code' : 0 , 'msg' : '登入成功' , 'data' : data})
else :
return Response({ 'code' : 999 , 'msg' : '密碼錯誤' })
else :
# 2. 未註冊使用者
# 2.1 生成新使用者, 設定使用者名稱密碼, 儲存, 然後繫結, 返回token, 登入成功
user = User(username = username)
user.set_password(password)
user.save()
ou = OauthUser(uid = weibo_uid, user = user, oauth_type = '1' )
ou.save()
payload = jwt_payload_handler(user)
token = jwt_encode_handler(payload)
data = jwt_response_payload_handler(token, user)
data[ 'type' ] = '0' #指定為登入成功
return Response({ 'code' : 0 , 'msg' : '登陸成功' , 'data' :data})
|