簡體   English   中英

如何讓服務器訪問Google Calendar API?

[英]How to have server access Google Calendar API?

我正在嘗試構建一個網絡應用程序,該應用程序將訪問用戶的Google Calendar API,而無需他們實際在其中。 因此,基本上是在后台從我的服務器(PHP腳本)在其Google日歷中添加或修改事件。

我已經是Google日歷中的oauth2了,我為他們准備了刷新令牌,因此他們不必每次都重新登錄。 他們只需登錄一次oauth就可以了。 但是如何使服務器可以在后台進行更改呢?

我想到了。 因此,我要做的就是將access_token存儲在數據庫中,並檢查訪問令牌是否已過期。 如果是這樣,我將使用數據庫中的refresh_token生成一個新的訪問令牌。 因此,服務器每次訪問用戶帳戶時,都會使用數據庫中的訪問令牌。 另外,請確保將訪問類型設置為offline如下所示:

$client->setAccessType('offline');

如果您習慣制作“普通”網頁,那么進行異步工作通常會中斷工作流程,因為任何異步活動都位於通常的請求生命周期之外。

您需要將異步任務委派給專用程序,進程或線程。 這意味着使用一種排隊系統,並有一個單獨的進程,其工作是在排隊系統中運行任務並更新狀態。

如果您正在學習的道路上,建議您自己動手-最小排隊系統是一個不錯的學習項目。 您可以使用常規數據庫管理系統進行部署。 您必須注意競爭條件(提示:使用行鎖)。

如果您正在生產中,建議您使用ZeroMQ之類的東西-我知道PHP有很好的綁定。

除了更新您的網站並從排隊系統中讀取信息之外,您還需要任務運行器-最簡單的形式是計划作業; 您可以在一個while循環中制作一個簡單的php腳本,休眠一段時間(取決於您所構建的軟件的流量),檢查作業隊列中是否有內容,並在需要時進行更新。

您可能需要學習如何使每次啟動計算機時都運行的進程來執行此操作,否則簡單的系統重新啟動將使您的設置變糟。

最后,工作流程將如下所示:

  • 網站具有檢查隊列的功能(我是否將尚未完成的事情排隊?我已經排隊的事情已經完成?我是否讓用戶知道作業已經完成?等)
  • 網站具有將作業插入隊列的功能
  • 與網站不同的流程可以不時檢查隊列,並根據交易結果進行更新

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM