作者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