首页 > 代码库 > google API 使用Client Login 登录授权

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=BadAuthenticationUrl=https://www.google.com/accounts/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbufmhdsjlfjdlsjooXTjXExc4le_Gs-DXFMFTJtvp-c2nGLoRe4x9ClckVRRDTxugccDK-cg18GIk_-eVozE8Anhsdfdshjfh46ygvrfXANEPm8Zo-Mpjcy8_cJe-0368ukKfKpb0nExpKDDiDsvSOVa11Ks_ZKhyAw2N9zl2pphbT53wfsdhkjhDUIgCVSK--5r79hfdsjkFvXb-Ry-7YjI3d8M1MPdHxUiged5t11gveSaqwhAijcInfo=WebLoginRequired"‘ in /root/ga/gapi.class.php:418Stack 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 API 使用Client Login 登录授权