クライアント用のトークンを作成するために、リアルタイムのオーディオおよびビデオ
aliyunsdkcore.client 輸入AcsClient から aliyunsdkrtc.request.v20180111の輸入CreateChannelRequest から aliyunsdkcore.acs_exception.exceptions インポートServerExceptionの 輸入rtc_user_configのようaliyunsdkcore.profile.region_providerを インポートrtc_requestとしてaliyunsdkcore.request 輸入rtc_protocol_typeのようaliyunsdkcore.http.protocol_type 輸入JSON、UUID #频道认证 クラスChannelAuth: デフ __init__ (自己): self.app_id =なし self.channel_id = なし self.nonce = なし self.timestamp = なし self.channel_key = なし self.recoveredない = なし self.request_id = なし #恢复错误 デフrecover_for_error(例、APP_ID、CHANNEL_ID): 致命的な = Falseの REQUEST_ID = "" もしでisinstance(EX、ServerException): REQUEST_ID = ex.get_request_id() コード = ex.get_error_code() もしコード== "IllegalOperationApp " : 致命的な = 真 のelifの code.startswith(" InvalidAccessKeyId " ): 致命的な = 真 のelifのコード== " SignatureDoesNotMatch " : 致命的な = Trueの 場合、致命的な: 調達元は 回復 = " RCV-%sの"%のSTR(uuid.uuid4( )) プリント("%を%Sからの回復、=%sの回収」(EX、回収)) AUTH = ChannelAuth() auth.app_id = APP_ID auth.channel_id = CHANNEL_ID auth.nonce = 回収 auth.timestamp = 0 auth.channel_key = 回収 auth.request_id = REQUEST_ID auth.recovered = 真の リターンのauth #创建频道 デフcreate_channel(APP_ID、CHANNEL_ID、 access_key_id、access_key_secret、region_idが、エンドポイント ): 試してください: クライアント =AcsClient(access_key_id、access_key_secret、region_idが) 要求 = CreateChannelRequest.CreateChannelRequest() request.set_AppId(APP_ID) request.set_ChannelId(CHANNEL_ID) #を使ってHTTP、X3の倍高速HTTPSより。 rtc_request.set_default_protocol_type(rtc_protocol_type.HTTP) 応答 = client.do_action_with_exception(リクエスト) OBJ = json.loads(応答) AUTH = ChannelAuth() auth.app_id = APP_ID auth.channel_id = CHANNEL_ID auth.nonce = OBJ [ ' ノンス' ] auth.timestamp = OBJ [ ' タイムスタンプ' ] auth.channel_key = OBJ [ ' ChannelKey ' ] auth.request_id = OBJ [ ' RequestId ' ] auth.recovered = Falseの 戻りAUTH 以外EXとして例外: リターンrecover_for_error(例、APP_ID、CHANNEL_ID) のregion_id = " CN-杭州" #地域 終点= "rtc.aliyuncs.com 「 #节点 APP_ID = ' sj17fi ' CHANNEL_ID = STR(uuid.uuid4()) access_key_id = ' LTAIT0dog7 ' access_key_secret = ' 8LOt6GqvvvvvvvPdvPcBXl ' AUTH = create_channel(APP_ID、CHANNEL_ID、 access_key_id、access_key_secret、region_idが、エンドポイント ) #プリント(R1) #1 プリント(auth.channel_key) #1 プリント(auth.nonce) #1 プリント(auth.timestamp) #为客户端创建令牌 インポートUUID、hashlibの デフcreate_user_id(): 戻りSTR(uuid.uuid4()) DEF create_token(CHANNEL_ID、channel_key、APP_ID、USER_ID、ナンス、タイムスタンプ): CHANNEL_ID = CHANNEL_ID .encode(' UTF-8 ' ) channel_key = channel_key.encode(' UTF-8 ' ) APP_ID = app_id.encode(' UTF-8 ' ) USER_ID = user_id.encode(' UTF-8 ' ) ノンス = nonce.encode (' UTF-8 ' ) のタイムスタンプ = STR(タイムスタンプ).encode(' UTF-8 ' ) 、H = hashlib.sha256() h.update(CHANNEL_ID) h.update(channel_key) h.update(APP_ID) h.update(USER_ID ) h.update(ノンス) h.update(タイムスタンプ) トークン = h.hexdigest() 戻りトークン ユーザーIDを = create_user_id() トークン = create_token(CHANNEL_ID、auth.channel_key、APP_ID、 ユーザーID、auth.nonce、auth.timestamp) チャネル = {} チャネル[ " AppIDの' ] = APP_ID チャネル[ ' CHANNEL_ID ' ] = CHANNEL_IDの チャネル[ ' ユーザーID ' ] = ユーザーIDの チャネル[ ' ノンス' ] = auth.nonceの チャネル[ ' タイムスタンプ' ] = auth.timestampの チャネル[ ' トークン' ] = CHANNEL_ID チャネル[ ' GSLB ' ] = ' https://rgslb.rtc.aliyuncs.com ' プリント(チャネル)
##{ 'AppIDを': 'sj1fu7fi'、 'CHANNEL_ID': '02da1070-EC2A-4ebd-829f-4653e385b4a2'、 # 'ユーザID': '9072b3d7-e954-4fd4-B807-aa60bf1d83c3'、 'ナンス': '844bba6b89b5f9956f6a2a6fc33efde8'、 'タイムスタンプ':1555379321、 # 'トークン': '02da1070-EC2A-4ebd-829f-4653e385b4a2'、 'GSLB': 'https://rgslb.rtc.aliyuncs.com' #}