google API 使用Client Login 登录授权
今天要使用google api来获取google analytics 的数据,所以必须要用到google 的登录授权。
Google的服务认证体系包含了多种认证授权的方式,如AuthSub授权认证服务、OAUTH授权认证服务与ClientLogin授权认证服务等。具体大家可以参考 :
http://blog.csdn.net/hereweare2009/article/details/4002537
今天着重说的是 Google ClientLogin授权认证 。
其实认证一点也不麻烦,使用curl轻松实现。下面是一段简单代码:
$data = array( 'accountType' => 'GOOGLE', 'Email' => $email, 'Passwd' => $password, 'service' => 'analytics', //google 一系列api 的简写,在google 上能找到,可以换成你想要的服务简写 'source' => 'test-oauth-1.0', //给你自己的应用程序命名 ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $output = curl_exec($ch); $info = curl_getinfo($ch);
上面这段代码只是简单实现,大家可以发现非常简单,其实官方提供了一个php操作类 gapi (上一篇也大体说了下),对于想获取google analytics数据来说功能强大,非常建议使用。云盘地址:http://pan.baidu.com/s/1kTIEIov ,我只用到了里面的 gapi.class.php & example.report.php 。
上面这些其实都不难,一般都可以解决。今天着重要强调的是,在使用过程中,我遇到了这样的一个问题:
[root@local ga]# php example.report.php Fatal error: Uncaught exception 'Exception' with message 'GAPI: Failed to authenticate user. Error: "Error=BadAuthentication Url=https://www.google.com/accounts/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbufmhdsjlfjdlsjooXTjXExc4le_Gs-DXFMFTJtvp-c2nGLoRe4x9ClckVRRDTxugccDK-cg18GIk_-eVozE8Anhsdfdshjfh46ygvrfXANEPm8Zo-Mpjcy8_cJe-0368ukKfKpb0nExpKDDiDsvSOVa11Ks_ZKhyAw2N9zl2pphbT53wfsdhkjhDUIgCVSK--5r79hfdsjkFvXb-Ry-7YjI3d8M1MPdHxUiged5t11gveSaqwhAijc Info=WebLoginRequired "' in /root/ga/gapi.class.php:418 Stack trace: #0 /root/ga/gapi.class.php(62): gapi->authenticateUser('xxxxxxx@xxxxx', 'xxxxxxx') #1 /root/ga/example.report.php(9): gapi->__construct('xxxxxxx@xxxxxx', 'xxxxx') #2 {main} thrown in /root/ga/gapi.class.php on line 418
估计有很大可能大家也会遇到,我一度怀疑是否是墙GFW的原因(这里一直返回403,所以排除了GFW原因)。在google的帮助下,终于找到了答案(见http://stackoverflow.com/questions/15742352/google-api-login),原因在于google的账户安全设置,得允许应用去访问才可以。
解决办法如下:
1、点击 https://accounts.google.com/DisplayUnlockCaptcha 点击页面的继续,再继续程序,是否还有问题,有问题,再继续第二步;
2、点击https://www.google.com/settings/security/lesssecureapps 查看 是否启用了“不够安全的应用”,选择启用,点击完成。
这样应该就解决问题了。
差点忘了,还有一点,如果要获取google analytics 数据,还需要1个profile_id ,这个可以从url中获取,比如 我的google analytics 的url地址为https://www.google.com/analytics/web/?hl=zh-CN#report/visitors-overview/a4xxxx177777w80xxxxx363p83071731/ profile_id就是这个地址最后的p之后的部分 83071731
搞定!