PHP 如何使用Google API相關功能

PHP 之封面圖

有別於其他的API,使用google的API時,需要使用Google Client Library,除了使用composer載入以外,也可以透過此連結直接下載,要記得選擇與當前 PHP 框架對應的檔案才能正常使用,本篇文章會說明如何使用Google Client Library,包含前置設定,引用功能到實際使用google drive的API上傳檔案。

前置作業

1.首先到google專案頁面建立一個專案,建立完成後點選左側的API和服務

PHP 之說明圖

2.左側跳轉到憑證頁面,建立OAuth用戶端ID

PHP 之說明圖

3.應用程式類型選取網頁應用程式,授權的JavaScript 來源以及授權的重新導向 URI,分別對應送出OAuth以及接受OAuth結果的網址,這個網址是可以使用localhost的

PHP 之說明圖

4.點選左側選單程式庫,並搜尋要啟用的API點選啟用

5.點選剛剛申請好的OAuth 用戶端ID,點選用戶端密鑰旁的下載,會得到一個json檔

6.至此設定就完成了,接下來是程式面的開發,我們需要建立一個送出請求的 php 頁面

  1. 建立一個google client物件
    →$client = new Google\Client();
  2. 將上一步的json檔案載入
    →$client ->setAuthConfig(“json檔的相對或絕對路徑”);
  3. 加入這次要使用的API範圍,這個步驟要跟上面的第4步開啟API相呼應,只設定這邊還是會無法使用該API
    →$client ->addScope(Google_Service_Drive::DRIVE_FILE);
  4. 加入這兩個設定,讓之後其可以自動刷新憑證,不加的話每隔一段時間就得重複開啟OAuth頁面做授權
    →$client->setAccessType(‘offline’);
    →$client->setApprovalPrompt(‘force’);
  5. 設定用戶給予權限後要重導向回我們系統的處理頁面
    →$redirect_uri =”處理頁面url”;
    →$client ->setRedirectUri($redirect_uri);
  6. 取得要給客戶同意授權的頁面url,並用js或其他方式將用戶導向到這個頁面
    →$auth_url = $client ->createAuthUrl();
    →echo(“<script>location.href = ‘”.$auth_url.”‘</script>”);

7.接下來要建立授權接收端的頁面

  1. 經過實測後證實用同一個$client物件做授權行不通,所以得另外宣告一次
    →$client = new Google\Client();
  2. 加上client端的設定
    →$client ->setAuthConfig(“json檔的相對或絕對路徑”);
  3. 範圍跟重導向的設定也要加上
  4. 用得到的code獲得token,並設定給client物件,這個token最好另外存放,資料庫或實體檔案皆可,用來權限過期刷新
    →$token = $client -> fetchAccessTokenWithAuthCode($_GET[‘code’]);
    →$client -> setAccessToken($token);
  5. 使用前確保物件沒過期
    →if(!$client->isAccessTokenExpired()) 
  6. 如果過期的刷新方式
    →$client = new Google\Client();
    →$client ->setAuthConfig(“json檔的相對或絕對路徑”);
    →$client->setAccessToken(“前一次認證儲存的token”);
    →$refresh_token = $client->getRefreshToken();
    →$token = $client->fetchAccessTokenWithRefreshToken($refresh_token);
  7. 若確認沒過期即可使用我們授權範圍的API物件
    →$service = new Google_Service_Drive($client);
  8. 上傳檔案到指定的資料夾範例
    →$file = new Google_Service_Drive_DriveFile();
    →$file->setName(‘test.jpg’); // 這裡你可以設定你想要的文件名稱
    →$file->setParents(array(‘google資料夾的ID’));
    →資料夾的ID=點進資料夾的網址,最後面的那串18~tP


$result = $service->files->create($file, array(
  'data' => file_get_contents("要上傳的檔案路徑"),
  'mimeType' => mime_content_type("要上傳的檔案路徑"),
  'uploadType' => 'multipart'
 ));
$file_id = $result->id;
  $permission = new Google_Service_Drive_Permission(array(
   'type' => 'anyone',
   'role' => 'reader',
  ));
  $service->permissions->create($file_id, $permission);

結論

在現代的網頁開發中,Google提供的API無疑是不可或缺的工具。雖然Google將API相關的套件模組化,極大地簡化了實際使用時所需的開發時間,但這也使得開發前的準備和設定變得更加複雜。Google的OAuth認證作為使用所有API模組的前置作業,稍有不慎的設定錯誤就可能導致認證失效,進而中斷自動化程式的運行。為了幫助開發者更好地應對這些挑戰,撰寫此篇文章記錄了使用 PHP 與Google Client Library的步驟。本文將詳細介紹從開發環境的設置、Google API的啟用、OAuth 2.0認證的配置到實際範例程式碼的編寫,讓讀者能夠全方位掌握整個流程。這篇文章的目的不僅僅是提供一個指南,更是為了建立一個開發過程中的參考,讓未來在使用Google API進行開發時,能夠更加順利和高效。希望此文能為大家帶來幫助,讓相關開發工作變得更順利。

Comments

No comments yet. Why don’t you start the discussion?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料