2013-04-24 89 views
0

我是webservice的初學者。我正在寫一個Moodle的web服務。在moodle中沒有令牌的Webservice

我想爲用戶註冊編寫一項服務。在這種情況下,該用戶不會有任何令牌或用戶名+密碼。

我們如何讓此用戶撥打core_user_createUsers網絡服務註冊?

對於其他的服務,我用這個代碼:

$domainname = 'http://mydomain/moodle'; 

require_once('./curl.php'); 
$curl = new curl; 

$authurl = $domainname .'/login/token.php?username=admin&password=Admin123$&service=shcs_services'; 
$resp = $curl->get($authurl); 

if($resp) 
{ 
    $resp = json_decode($resp); 
    $authToken = $resp->token; 
} 

/// PARAMETERS 
$serverurl = $domainname . '/webservice/rest/server.php'; 


$params['wstoken'] = $authToken; 
$params['wsfunction'] = 'core_user_createUsers'; 
$params['moodlewsrestformat'] = 'json'; 




$user1 = new stdClass(); 
$user1->username = 'testusername'; 
$user1->password = 'Testpassword1%'; 
$user1->firstname = 'testfirstname1'; 
$user1->lastname = 'testlastname1'; 
$user1->email = '[email protected]'; 
$user1->auth = 'manual'; 
$user1->idnumber = 'testidnumber1'; 
$user1->lang = 'en'; 
$user1->theme = 'standard'; 
$user1->timezone = '-12.5'; 
$user1->mailformat = 0; 
$user1->description = 'Hello World!'; 
$user1->city = 'testcity1'; 
$user1->country = 'au'; 
$preferencename1 = 'preference1'; 
$preferencename2 = 'preference2'; 
$user1->preferences = array(
    array('type' => $preferencename1, 'value' => 'preferencevalue1'), 
    array('type' => $preferencename2, 'value' => 'preferencevalue2')); 
$users = array($user1); 
$params['users'] = $users; 


$resp = $curl->post($serverurl, $params); 
echo $resp; 
在上面的代碼

我想跳過以下部分

$authurl = $domainname .'/login/token.php?username=admin&password=Admin123$&service=shcs_services'; 
$resp = $curl->get($authurl); 

if($resp) 
{ 
    $resp = json_decode($resp); 
    $authToken = $resp->token; 
} 

所以,我不希望傳遞值$params['wstoken'] = $authToken;到網絡服務。

但它不允許我沒有令牌。這是我得到的錯誤:

{"exception":"moodle_exception","errorcode":"invalidtoken","message":"Invalid token - token not found"} 

回答

0

令牌是Web服務與您的應用程序連接的唯一途徑。這是必須的。正如我現在在Web服務和移動應用程序上工作一樣。所以我經歷過這個令牌是驗證Web服務的唯一方法。驗證它與Web服務連接的第一步。而且你根本沒有通過令牌。所以你的驗證會失敗。你得到這個錯誤。