作者kusoayan (瑋哥)
看板PHP
標題[分享] Google API 及 Service Account
時間Thu May 3 20:33:28 2012
上一篇問說要怎麼透過 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
1F:推 brt:讚 上次也跑了一次 還卡在怎麼放進去CI裏面~ 05/03 22:48
2F:→ kusoayan:放進 CI 應該不難? 一個 class 負責 auth 相關的就好 05/03 23:05
3F:→ kusoayan:了吧? 05/03 23:05
4F:推 brt:原來的模組用了zend的其他部份 變成又要重新拆解 卡來卡去 05/04 00:47
5F:→ kusoayan:對 Zend 那包很大一包,現在只能看 Google 有沒有要出自 05/04 00:59
6F:→ kusoayan:己的 apiYouTubeService.php 這個 class 05/04 00:59
7F:→ kusoayan:不然就只能自己刻了XD 05/04 00:59