[分享] Google API 及 Service Account

看板PHP作者 (瑋哥)時間13年前 (2012/05/03 20:33), 編輯推噓2(205)
留言7則, 2人參與, 最新討論串1/1
上一篇問說要怎麼透過 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

05/03 22:48, , 1F
讚 上次也跑了一次 還卡在怎麼放進去CI裏面~
05/03 22:48, 1F

05/03 23:05, , 2F
放進 CI 應該不難? 一個 class 負責 auth 相關的就好
05/03 23:05, 2F

05/03 23:05, , 3F
了吧?
05/03 23:05, 3F

05/04 00:47, , 4F
原來的模組用了zend的其他部份 變成又要重新拆解 卡來卡去
05/04 00:47, 4F

05/04 00:59, , 5F
對 Zend 那包很大一包,現在只能看 Google 有沒有要出自
05/04 00:59, 5F

05/04 00:59, , 6F
己的 apiYouTubeService.php 這個 class
05/04 00:59, 6F

05/04 00:59, , 7F
不然就只能自己刻了XD
05/04 00:59, 7F
文章代碼(AID): #1FediRzW (PHP)
文章代碼(AID): #1FediRzW (PHP)