google API 使用Client Login 登录授权

今天要使用google api来获取google analytics 的数据,所以必须要用到google 的登录授权。

Google的服务认证体系包含了多种认证授权的方式,如AuthSub授权认证服务、OAUTH授权认证服务与ClientLogin授权认证服务等。具体大家可以参考 :

http://blog.csdn.net/hereweare2009/article/details/4002537 

http://blog.zhourunsheng.com/2011/07/%E8%84%9A%E6%9C%AC%E6%96%B9%E5%BC%8F%E8%8E%B7%E5%8F%96google-clientlogin-auth-token/

 

今天着重说的是 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

搞定!

 

posted @ 2014-11-07 11:52  Gcoder  阅读(4478)  评论(0编辑  收藏  举报