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 。

上面这些其实都不难,一般都可以解决。今天着重要强调的是,在使用过程中,我遇到了这样的一个问题:

[[email protected] 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(‘[email protected]‘, ‘xxxxxxx‘)
#1 /root/ga/example.report.php(9): gapi->__construct(‘[email protected]‘, ‘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  查看 是否启用了“不够安全的应用”,选择启用,点击完成。

这样应该就解决问题了。

时间: 2024-08-11 05:42:49

google API 使用Client Login 登录授权的相关文章

ecshop使用Google API及OAuth2.0登录授权(PHP)

一.申请clientID https://console.developers.google.com/project 二.开启Google+ API权限 https://console.developers.google.com/project/gentle-charmer-848/apiui/api 三.添加同意画面 四.建立新的用户端ID(一个域名对应一个ID) 五.显示页面js登录按钮 案例地址:https://developers.google.com/+/web/signin/ 参考代

API INDEX V2 -- Login 登录

1, 登录 http://localhost:2448/api/ashx/service.ashx POST REQUEST 1: { "action":"login", "loginName":"zhazha", "loginPwd":"8888" } RESPONSE 1: { "data": { "Approved": false, &quo

在ASP.NET中基于Owin OAuth使用Client Credentials Grant授权发放Token

OAuth真是一个复杂的东东,即使你把OAuth规范倒背如流,在具体实现时也会无从下手.因此,Microsoft.Owin.Security.OAuth应运而生(它的实现代码在Katana项目中),帮助开发者偷了不少工,减了不少料. 这篇博文试图通过一个简单的示例分享一下如何基于Microsoft.Owin.Security.OAuth,使用Client Credentials Grant授权方式给客户端发放access token. Client Credentials Grant的授权方式就

Amazon Alexa登录授权(Android)

访问Alexa的API,必须要携带AccessToken,也就是必须要登录授权,本文主要记录Amazon Alexa在Android平台上的登录授权过程. 一.在亚马逊开发者平台注册应用 进入亚马逊开发者平台的Alexa栏 https://developer.amazon.com/edw/home.html#/ 点击Alexa Voice Service的Get Started,进入到应用管理页面 选择注册一个产品,我这边选的是application,然后开始填写相关信息. 这里Applicat

ASP.Net Core 2.1+ Cookie 登录授权验证【简单Cookie验证】

原文:ASP.Net Core 2.1+ Cookie 登录授权验证[简单Cookie验证] 介绍 本文章发布于博客园:https://www.cnblogs.com/fallstar/p/11310749.html 作者:fallstar 本文章适用于:ASP.NET Core 2.1 + 今天想给一个asp.net core 的项目加上权限验证,于是研究了一下怎么加, 折腾了好一阵,发现原来Filter的方式被放弃了,现在使用Policy 和 Scheme 的方式来校验了... 然后开始猛查

使用google API之前需要對input 做什麼 安全性的處理?

我正要使用node.js 和 google map api做一个小应用,Google MAP API的使用URL如下: https://maps.googleapis.com/maps/api/place/textsearch/json?query=KEY+WORDS&key=YOUR_API_KEY KEY WORDS的部分将是我在我的应用上id="keywords"这个input的value HTML CODE: <form action="/api/goo

06_NoSQL数据库之Redis数据库:Redis的高级应用之登录授权和主从复制

 Redis高级实用特征 安全性(登录授权和登录后使用auth授权) 设置客户端连接后进行任何其他指定前需要使用的密码. 警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒中进行150k次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解. 修改密码只需要在我们的配置文件中修改下面参数: #requirepass foobared Requirepass beijing     (红色的就是指定的要配置的密码) 上面的一句表示的是设置连接的口令是

Linux下安装Google SDK 配置Google API翻译环境

1.准备工作 1.1 查看系统Python版本 Linux 安装Google SDK时要求安装Python 2.7或以上版本 可以用 python -V 查看当前环境下的 Python 版本. 若Python版本低于2.7,需要重新安装Python,并设为默认Python 1.2 下载Google SDK cd到你想保存Google SDK的位置,执行 wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-c

Downloading the Google Cloud Storage Client Library

Google Cloud Storage client是一个客户端库,与任何一个生产环境使用的App Engine版本都相互独立.如果你想使用App Engine Development server开测试你的代码,你必须使用App Engine SDK 1.8.1及更高版本的development server. 下载Google Cloud Storage client库 你可以使用流行的工具,比如Apache Maven,Apache Ivy,Git来下载库,或者你可以从Maven库手动下