Contents ...
udn網路城邦
PHP 如何使用Google API相關功能
2025/06/11 16:53
瀏覽51
迴響0
推薦0
引用0

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

前置作業

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

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

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

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(" ");

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進行開發時,能夠更加順利和高效。希望此文能為大家帶來幫助,讓相關開發工作變得更順利。

全站分類:知識學習 其他
自訂分類:技術探討
上一則: C# 映射(Reflection)
下一則: 偵錯階段使用Https

限會員,要發表迴響,請先登入