2016-06-17 30 views
0

我已經在服務器上安裝了Moodle實例,並在同一臺服務器上安裝了Drupal實例。但是,他們都使用不同的域名。如何在Drupal中使用Moodle API或Moodle函數?

drupal.example.com (running Drupal 7.44) (hosted on Server A) 
www.example.net/moodle (running Moodle 2.6.2) (hosted on same server as above) 

要求: 我想在Drupal使用Moodle的功能。我想讓我的Moodle用戶使用他們的Moodle憑證登錄到Drupal。

已使用Moodle憑證登錄到Drupal的用戶應該可以訪問Drupal上的Moodle課程。

我的方法: 中包括一個外部PHP文件(託管在Drupal站點)Moodle的配置文件,發送AJAX請求到PHP文件來驗證用戶身份,從得到的Moodle課程列表和其他信息的Drupal。

我仍在處理這個要求。想知道是否有任何簡單的方法來滿足這個要求。

回答

1

Moodle爲這個用例提供了一套非常廣泛的web服務,如果你看一看,有兩種方法可以實現兩個系統之間的SSO。

+0

有關Moodle Web服務的信息,請參閱https://docs.moodle.org/33/en/Web_services_FAQ。 – luisdev

-1

這個要求沒有簡單的解決方案。不過,你可以做到這一點。

  1. 將Moodle UI自定義爲Drupal。
  2. 用Moodle實現SSO。
  3. 在您的Drupal儀表板上添加一個鏈接到課程清單。

對於SSO和其他Web服務,請參閱此link

0

您現在處於正確的軌道上,我也實施了不同但類似的解決方案,以便用戶在登錄到其他系統時可以自動登錄到moodle。我分享我的代碼,如果它可以幫助你: -

<?php 


require('config.php'); 
$name=strtoupper($_REQUEST['username']); 
$password=$_REQUEST['password']; 
$dashboard = $CFG->wwwroot; 
$user = authenticate_user_login($name, $password); 
if(complete_user_login($user)) 
{ 
    $actual_link = "http://$_SERVER[HTTP_HOST]/moodlevxl/login/logout.php?sesskey=".$user->sesskey; 

     header("http://$_SERVER[HTTP_HOST]"); 
     ?> 
     <script> 
      location.href = "Your callback url"; 
     </script> 
     <?php 
    //print_r($_COOKIES); 
//echo "login"; 
} 
else 
{ 
    echo "not login"; die; 
} 



?>