アリクラウドリアルタイムのオーディオおよびビデオ

クライアント用のトークンを作成するために、リアルタイムのオーディオおよびビデオ
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' }

 














 

おすすめ

転載: www.cnblogs.com/chongdongxiaoyu/p/11685034.html