MeCloud API Version 2

Xác thực người dùng.

Có 2 cách để xác thực người dùng :

  1. SecretKey
  2. AccessToken

SecretKey

SecretKey là gì ?

  • Là mã do MeCloud tự động tạo ra cho user, khi mà chủ channel cấp quyền dùng API cho user.
  • Mã secretkey được dùng để sử dụng API một cách trực tiếp.
  • Mã secretkey có thể được đổi bởi người dùng.
  • Từ mã Secretkey người dùng có thể tạo AccessToken và có thời gian hết hạn.
  • Khi chủ Channel xóa SecretKey của người dùng thì những AccessToken của người dùng tạo dựa trên Secretkey đó sẽ mất.

Cách dùng SecretKey

Cách dùng Secretkey rất đơn giản, hiện nay ở version 1 chúng ta truyền vào access-token để xác thực thì thay vào đó ta truyền vào sk để xác thực.

Access Token


Access Token là gì ?

  • Có thể gọi nó là một mã xác thực dùng để xác thực với MeCloud API, người dùng này là ai, dữ liệu cần lấy ở đâu ?
  • Accesstoken sẽ được MeCloud trả về bởi hàm getAccessToken trong module Authen.
  • Accesstoken có thể lấy không thông qua Javascript API mà bằng cách lấy trực tiếp.
  • Access Token có thời gian hết hạn là một ngày,vì vậy nếu bạn muốn sử dụng qua ngày sau thì hãy tạo lại Token và từ đó tạo lại AcessToken.
  • Giới hạn tạo Access Token : mỗi CHANNEL chỉ được tạo 50 Accesstoken trong vòng 1 phút. Nếu vượt quá sẽ bị khóa trong vòng 5 phút.
  • Với hệ thống của bạn có phân quyền người dùng, hay nhiều người dùng thì bạn hãy tạo nhiều tài khoản khác nhau trong mecloud, vì accesstoken sẽ gắn liền với quyền của người dùng trong mecloud, bạn có thể giới hạn hoặc biết được ai sài chúng

Công dụng của Access Token

Access Token dùng cho mọi thao tác của MeCloud API , dùng để xác thực với MeCloud API là người dùng đã có tài khoản và có quyền sử dụng API


Các tham số để tạo Access Token

Tham số Mô tả
Token Mã Token được tạo bởi người dùng, và sẽ được MeCloud kiểm tra lại khi tao accesstoken.
AppId Mỗi người dùng khi đăng ký với MeCloud, sẽ được MeCloud cấp cho một Channel, và tương ứng với ChannelId là AppId để nhận biết người dùng ở Channel nào.
Time Đây là thời gian khi tạo token, kiểu thời gian là milisecond , bạn nên ghi lại thời gian để khi tạo #accesstoken bạn cần phải truyền theo tham số thời gian. Vd : 1433387738783 ( milisecond)
random-key Khi tạo Token bạn phải có random-key vì vậy, khi lấy accesstoken hãy nhập lại chuỗi random-key.
email Email người cần dùng accesstoken ( Nếu email là chủ channel bạn có quyền thực hiện thao tác với channel, nếu email là người dùng bạn chỉ có quyền thao tác với thông tin của người dùng đó ).
callback (function) Khi có kết quả trả về từ MeCloud, hàm callback(Data) sẽ được thực hiện. Data là một object #Json chứa dữ liệu trả về, nếu bạn muốn biết rõ hãy xuống phần ví dụ để xem rõ hơn về kết quả của authen.

Cách thức lấy Access Token bằng Javascript API

  • Để lấy được AccessToken đầu tiên ta cần phải thêm thư viện của MeCloud API JavaScript nếu bạn chưa biết hãy đọc #Cách cài đặt thư viện MeCloud API JavaScript
  • <script type="text/javascript" src="//sdk.videohostingvn.com/loader"></script>
  • Sau đó ta tạo ra một đối tượng chứa các dữ liệu như là token , appId, time, random-key, callback.
  • var paramsAuthen = {
    		'token' : token, //token tự người dùng tạo
    		'appId' : appId,
    		'time'	: time,
                    'email' : emailUser,
    		'random-key' : randomkey,
    		'callback' 	: function(authenResult){   //hàm callback dùng để sử dụng dữ liệu khi được trả về
    						if(authenResult.error == 0){
    							console.log(authenResult.accesstoken);
    							// đã có accesstoken
    						}else{
    							console.log(authenResult.msg);
    							//đã có lỗi xảy ra.
    						}
    		}
    	}
  • Sau đó dùng hàm getAccessToken(paramsAuthen) để lấy AccessToken
  • mecloud.require('AUTHEN',function(authenModule){
    		authenModule.getAccessToken(paramsAuthen);
    	});	

    Kết quả trả về của hàm getAccessToken

    AuthenResult = {
    		'error' :  // số , 0 là thành công , -1 là đã có lỗi xảy ra.
    		'msg'   :  //chuỗi , nếu error = -1  thì msg sẽ hiện thông báo lỗi bị sai.
    		'accesstoken' :    //chuỗi mã xác thực trả về, nếu error = 0 thì accesstoken sẽ có.
    		'expired'  :   // thời gian hết hạn của accesstoken.
    	}

    Chú ý khi tạo AccessToken

    • Cách thức để tạo AccessToken trên chỉ cần thay đổi dữ liệu bên trong paramsAuthen là có thể lấy được AccessToken nếu như dữ liệu chính xác.
    • Nếu bạn thay đổi về kết cấu hay đối với code thì có khả năng xảy ra sai sót hay không chạy được, vì vậy nên tìm hiểu kỹ, hoặc đặt câu hỏi để MeCloud có thể hướng dẫn bạn rõ ràng hơn.

    Ví dụ

    <script type="text/javascript" src="//sdk.videohostingvn.com.vn/loader"></script>
    <script>
        var paramsAuthen = {
                'token' : token, //token tự người dùng tạo
                'appId' : appId,
                'time'	: time,
                'email' : emailUser,
                'random-key' : randomkey,
                'callback' 	: function(data){   				//hàm callback dùng để sử dụng dữ liệu khi được trả về
                        if(data.error == 0){  			//error = 0 là thành công , error = -1 là đã có lỗi xảy ra
                                console.log(data.accesstoken);
                        }else{
                                console.log(data.msg);
                        }
                }
        }
    	
        mecloud.require('AUTHEN',function(authen){
            authen.getAccessToken(paramsAuthen);
        });	
    	</script>
    	

    Lấy trực tiếp thông qua URL (Không cần JavaScript API)

     //sdk.videohostingvn.com/authen

    Ví dụ

     //sdk.videohostingvn.com/authen?appId=1&token=2&time=3&random-key=4&email=5

    Ví dụ lấy trực tiếp bằng PHP

    Mẫu PHP lấy accesstoken
    <?php
        // Params
        $milliseconds = round(microtime(true) * 1000);
        $appId ="";
        $secretKey = "";
        $randomKey = "";
        $emailUser="";
      
        //token raw
        $str = $appId.".".$milliseconds.".".$randomKey.".".$secretKey;
    
        //function call URL
        function callURL($url, $field){
                $curl = curl_init( $url );
                curl_setopt( $curl, CURLOPT_POST, true );
                curl_setopt( $curl, CURLOPT_POSTFIELDS, $field);
                curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1);
                return curl_exec( $curl );
        }
        $url_authen = '//sdk.videohostingvn.com/authen';
    
        $field_authen = array(
                'token' => sha1($str),
                'appId' => $appId,
                'time'	=> $milliseconds,
                'random-key' => $randomKey,
                'email' => $emailUser,   , 
        );
        $access_token_result = json_decode(callURL($url_authen, $field_authen));
    
        echo "Access token: ".$access_token_result->accesstoken;
        echo '<br/>';
         ?>
    

    Ví dụ cách lấy trực tiếp bằng Javascript không qua API

    Mẫu Javascript lấy accesstoken
    
        $.ajax({
            url : "//sdk.videohostingvn.com/authen",
            data: {
                'token' : "token",
                'appId' : "appId",
                'time'	: "time",
                'email' : "emailUser",
                'random-key' : "randomkey",
                },
            dataType:"json",
            success: function(result){
                if(result.error == 0){
                    console.log(result);
                }else{
                    console.log(result);
                }
            },
            error : function(result){
                console.log(result);
            },
    		 //complete: A function to be called when the request finishes (after success and error callbacks are executed)
            complete : function(result){
                console.log(result);
                   
            }
            })
    
        

    Thử tạo AccessToken với MeCloud

    Bạn có thể tạo thử AccessToken qua MeCloud API để kiểm tra kết quả bạn tạo AccessToken có đúng với MeCloud hay không.