WordPress外掛串接Google Classroom API
IPFS
若尚未安裝Composer請先參閱此篇教學
[Windows系統]如何在WordPress外掛開發內使用Composer
安裝完google套件後我們就來正式撰寫範例,當然在那之前你得先建立一個google專案且建立一組OAuth 2.0 用戶端 ID,
建立完成後下載該OAuth的json檔並放到外掛下的資料夾內(可自訂位置)
程式教學開始:
首先載入composer套件並啟用session,待會會用到
session_start();
require_once OnlineClass_DIR.'/vendor/autoload.php';
建立Google Client物件
$client = new Google\Client();
$client->setAuthConfig(OnlineClass_DIR.'/tools/classroom/credentials.json');
//我們剛下載的OAuth的json檔位置
$client->addScope(Google_Service_Classroom::CLASSROOM_COURSES_READONLY);
$client->addScope(Google_Service_Classroom::CLASSROOM_PROFILE_EMAILS);
$client->addScope(Google_Service_Classroom::CLASSROOM_PROFILE_PHOTOS);
$client->addScope(Google_Service_Classroom::CLASSROOM_ROSTERS_READONLY);
//使用範例功能所需要Google提供的權限範圍
接下來就是防刷新的部分,在第一次取得授權後,我們可以將認證資訊儲存在Session或Cookie中,在認證未過期前使用,可避免使用者每次存取該頁面都需要重新授權
if(isset($_SESSION["google_token"])){
$client->setAccessToken($_SESSION["google_token"]);
//如果已經有token存在,則使用token做存取
}
if ($client->isAccessTokenExpired()) {
//如果token過期
if (isset($_GET['code'])) {
$code=$_GET['code'];
$token = $client->fetchAccessTokenWithAuthCode($code);
$_SESSION["google_token"]=$token;
//重新刷新token並存進session
}
else{
$redirect_uri = admin_url().'admin.php?page=online-class_main';
$client->setRedirectUri($redirect_uri);
$authUrl = $client->createAuthUrl();
wp_redirect($authUrl);
//導向到google授權頁面獲取授權後返回
}
}
獲取授權後,就可以開始使用各種測試範例,這部分google的文件其實沒有寫得很清楚如何使用,例如service文件內完全沒提到要怎麼建立,在這邊幫大家整理一下
$service = new Google\Service\Classroom($client);
//透過剛剛授權的client物件,獲取相對應的服務
$pageToken = NULL;
$courses = array();
do {
$params = array(
'pageSize' => 100,
'pageToken' => $pageToken
);
$response = $service->courses->listCourses($params);
//使用列出課程的範例
$courses = array_merge($courses, $response->courses);
$pageToken = $response->nextPageToken;
} while (!empty($pageToken));
if (count($courses) == 0) {
print "No courses found.\n";
}
else {
$html = "";
print "Courses:\n";
foreach ($courses as $course) {
printf("%s (%s)\n", $course->name, $course->id);
}
}
若能成功看到列出的課程即為成功
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!