看板 PHP 關於我們 聯絡資訊
上一篇問說要怎麼透過 OAuth2 去驗證 hard coded 的身份驗證 大致上來說就是我希望能讓自己的 Web Application 通過驗證,而不是 User, 這樣 user 就能透過我的 Web App 去做一些相關操作。 後來翻 Google API 的 Documents 時意外發現, 原來 Google 有提供一個 Service Account 的服務, 這個服務正好就是我想要的, 首先到 https://code.google.com/apis/console 這裡去註冊你的 application 註冊時身份要選擇 Service Account。 一般來說,是由 web app 產生一個 url,讓 user 透過這個 url 到授權頁面 user 授權後會再度被導回 web app,並且附帶一個 access token 而 Service Account 則是讓上述 user 所做的事情改成我們的 web app 去做 也就是由 web app 去要 access token 回來 但這裡的問題會是,要怎麼確認去要 access token 的是我們的 web app 而不是別人? 所以 Google 需要一個加密過的 JSON Web Tokens(JWT), 驗證身份的詳細流程可以參考 http://goo.gl/RyqTd 這邊就稍微分享一下 Service Account 的用法, 整個 JWT 的產生、簽章都可以在 Google 的 Doc 中找到 http://goo.gl/qUZEL 但是 Doc 上也說了,非常不建議 developer 自己實作這個流程, 而是建議你使用 Google APIs Client Library for PHP http://goo.gl/MZ4yg 透過這個 Client Library,取得 access token 的整個過程會變得非常簡單 程式碼部份可以參考 http://scrp.at/bnp 一開始的幾個 constant: CLIENT_ID 和 SERVICE_ACCOUNT_NAME 分別是 Google Api Console 上面顯示的 Client ID 和 Email address KEY_FILE 則是當初申請 Google API Console 時他給的 Private key 的檔案位置 接著就可以使用 apiAssertionCredentials 這個物件的 generateAssertion method 下面的 curl 是我自己把資料 post 到 google 測試用的… 因為還沒有很熟這個 library 怎麼用XD 應該是會有非常方便的方法啦QQ 如果有高手有玩過的話也請指點一下 不然這樣 post 過去真的很麻煩XD 最後拿到的 access token 就可以用來操作相關的 API 了! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.239.137
brt:讚 上次也跑了一次 還卡在怎麼放進去CI裏面~ 05/03 22:48
kusoayan:放進 CI 應該不難? 一個 class 負責 auth 相關的就好 05/03 23:05
kusoayan:了吧? 05/03 23:05
brt:原來的模組用了zend的其他部份 變成又要重新拆解 卡來卡去 05/04 00:47
kusoayan:對 Zend 那包很大一包,現在只能看 Google 有沒有要出自 05/04 00:59
kusoayan:己的 apiYouTubeService.php 這個 class 05/04 00:59
kusoayan:不然就只能自己刻了XD 05/04 00:59