[分享] Google API 及 Service Account
上一篇問說要怎麼透過 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
05/03 22:48, 1F
→
05/03 23:05, , 2F
05/03 23:05, 2F
→
05/03 23:05, , 3F
05/03 23:05, 3F
推
05/04 00:47, , 4F
05/04 00:47, 4F
→
05/04 00:59, , 5F
05/04 00:59, 5F
→
05/04 00:59, , 6F
05/04 00:59, 6F
→
05/04 00:59, , 7F
05/04 00:59, 7F
PHP 近期熱門文章
PTT數位生活區 即時熱門文章