`
king_tt
  • 浏览: 2257362 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Google Calendar v3授权传参数

 
阅读更多
以典型的客户端-服务器端授权为例
一 基本流程
使用Google Calendar v3 ,如果以servlet作为代理,可以使用官方示例,自己写一个类A.java继承AbstractAuthorizationCodeServlet类,这个类主要用于跳转到google提供的授权页面,如果用户同意授权,则根据A类中的URL(这个必须和注册的google 回调路径相同,比如oauth_callback否则报错)重定向到B类,B.java 继承AbstractAuthorizationCodeCallbackServlet类,这个访问路径类似http://www.example.com/oauth_callback?code=ABC1234。这里我配置oauth_callback为servlet的访问路径,B类中的
onSuccess方法将根据获得的access Token(这是根据传过来的code获得的)做业务操作。

二 需要参数的情况
有些业务需要用户传参数,直接传参数给A,再试图在B中获取是不行的!B类中只能获取某些固定的参数,如code。要想传用户参数,我们可以在A中先获取,把几个参数组装为json格式字符串(还可以继续base64编码),把这个字符串作为state的值,再重定向到授权页面,同意后state参数可以传到B类,取值解析json字符串(或先base64解码),得到参数。
由于API中AuthorizationCodeRequestUrl有处理state的方法,而AbstractAuthorizationCodeServlet已经直接封装,为了使用setState,直接在A类中继承HttpServlet重写service方法,复制大部分AbstractAuthorizationCodeServlet的内容,稍作修改:
resp.sendRedirect(flow.newAuthorizationUrl().setState(json).setRedirectUri(redirectUri).build());

三 关于refresh token
默认情况下,用户授权之后token会有一个小时的有效期,之后你可以通过refresh token再重新获取token。所以,如果不需要用户再次授权,可以在第一次,保存好token、refresh token、ExpirationTime。实例中用了JDO来实现,自己如果使用数据库保存,可类似写一个类实现CredentialStore类。使用的时候,现在数据库中取出,再创建credential,如:
GoogleCredential credentialNew = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY).setClientSecrets(clientSecrets)
.addRefreshListener(new CredentialStoreRefreshListener(userID, new DBCredentialStore())).build()
.setAccessToken(accessToken).setRefreshToken(refreshToken)
.setExpirationTimeMilliseconds(expirationTimeMilliseconds);
在无效的情况下,Listener会自动去用refresh token请求。
分享到:
评论

相关推荐

    googlecalendar_v3_chrome_extenstion:用于 Chrome 扩展的不完整的 Google Calendar v3 API

    googlecalendar_v3_chrome_extenstion 用于 Chrome 扩展的不完整的 Google Calendar v3 API。 我无法让 Google 的 Javascript api 与 Chrome 扩展程序一起使用。 因此,我整理了一些代码以向 Google 进行身份验证,...

    GoogleCalendarSync 谷歌日历同步

    GoogleCalendarSync 谷歌日历同步

    在 PHP 应用程序中集成 Google Calendar代码

    集成Google Calendar需要用户授权。在PHP应用中,创建一个授权页面,引导用户跳转到Google的授权URL,获取授权码。一旦用户同意授权,Google会重定向回你指定的回调URL,附带授权码。在回调函数中,交换授权码为访问...

    jquery.google.calendar:使用 Google Calendar API v3 绘制日历的 jQuery 插件

    jquery.google.calendar 它是一个 jQuery 插件,它使用 Google Calendar API v3 根据在 Google Calendar 中注册的内容创建日历。操作环境这是一个 jQuery 插件,所以你需要 jQuery。 使用 jQuery 1.10.2 确认操作。...

    Google Calendar Sync

    【Google Calendar Sync】是一款工具,专门用于将Google日历与Microsoft Outlook进行同步,特别是针对Outlook 2010版本。这款应用旨在帮助用户在两个不同的日历系统间无缝地转移和更新事件,确保无论是在网页端使用...

    GoogleCalendar Google日历示例

    在IT行业中,Google Calendar是一款非常重要的在线日历应用,它被广泛用于个人和团队的日程管理。本示例将深入探讨如何使用Google Calendar及其相关功能,帮助用户更好地组织时间、安排会议并同步不同设备上的日程。...

    Google-Calendar-Perl-access:用于Google Calendar v3 API访问的Perl库

    它包含一个库( calendar_functions.pl ),该库可用于使用Perl命令行访问新的Google Calendar API v3。 一个示例用法程序是create_cal_entry_full.plx ,它使用库中的大多数功能。 还有一个简短程序的目录(示例...

    google calendar 农历生日提醒

    Google calendar 农历生日提醒生成工具[Excel宏文件] 在网上,找到了一个用 .NetFramwork 写的工具,生成 ICS 文件来导入 google calendar,但提醒方式不可定制。 由于没有这个工具的源代码,因此我用 excel 宏来...

    Google Calendar 項目管理應用

    ### Google Calendar 项目管理应用 #### 一、为何通过电子表格同步日历? 在项目管理和时间安排方面,人们经常使用电子表格作为计划工具,因为它们易于格式化和使用公式进行计算。同时,日历功能也被广泛应用于...

    .net模仿Google Calendar

    《.NET 模仿 Google Calendar 实现详解》 在当今数字化时代,日历管理软件已经成为了日常生活和工作中不可或缺的一部分。Google Calendar作为一款优秀的在线日历应用,以其强大的功能和便捷的用户体验深受用户喜爱...

    类似google calendar

    【标题】:“类似Google Calendar”项目 这个项目旨在创建一个类似于Google日历的应用程序,它利用了MySQL数据库、JavaServer Pages (JSP) 和JavaScript技术。Google日历是一款流行的在线日程管理工具,允许用户...

    beehive.calendar.js v0.1 javascript实现的google日历.zip

    《beehive.calendar.js v0.1:JavaScript实现的Google日历详解》 在Web开发领域,JavaScript作为一种强大的客户端脚本语言,被广泛应用于构建交互性强、用户体验良好的动态网页。Google日历作为一款功能丰富的在线...

    仿Google Calendar日历

    本来想直接叫Calendar,可是Google Code中的项目名称必须唯一,所以,就加个前缀吧,X=xuanye G=Google Calendar Like 功能列表 1:支持三种视图类型 (日,月,周) 2:支持定义一周的开始日期 3: 支持无刷新...

    GoogleCalendar

    **Google Calendar:一款高效的时间管理工具** Google Calendar是一款由谷歌公司开发的日历应用,它提供了在桌面和移动设备上管理个人和团队日程的强大功能。作为Google Workspace的一部分,这款工具让用户能够轻松...

    Notion-and-Google-Calendar-2-Way-Sync.zip

    2. **Google Calendar API**:同样,需要熟悉Google的API,知道如何获取用户授权,以及如何处理日历事件。 3. **Python编程**:使用Python作为主要开发语言,掌握基础语法、类和函数,以及如何使用requests库或其他...

    google-api-services-calendar-v3-rev195-1.20.0.zip

    fastjson.zip,fast json是一个json处理器(json解析器 json生成器),用java a fast json parser/generator for java编写。(阿里云数据湖分析https://www.aliyun.com/product/data lake analytics由fastjson提供...

    google calendar农历十五导入文件

    google calendar农历十五导入文件,导入后日历上会显示每个月的农历十五代办事项,时间范围:2018年正月十五至2100年正月十五。

    Laravel开发-laravel5-google-calendar

    - 用户登录并授权应用访问他们的Google Calendar。 - 显示用户的日历事件列表。 - 创建新的日历事件。 - 更新或删除已有的事件。 - 实现日历同步,当Google Calendar中的事件发生更改时,应用能自动更新。 6. ...

    JavaScript for Google Calendar

    ### JavaScript for Google Calendar #### 知识点概览 1. **Google 日历 API 的基本使用**:如何创建、更新和删除事件。 2. **JavaScript 语法与对象操作**:理解 JavaScript 中的基本语法结构和对象操作。 3. **...

    一个可创建Google Calendar Event hyperlinks 的ASP.NET 自定义控件源码

    本主题将深入探讨一个针对"Google Calendar Event hyperlinks"的ASP.NET自定义控件源码,该控件允许用户方便地创建指向Google日历事件的链接。 首先,我们需要理解什么是自定义控件。在ASP.NET中,自定义控件是通过...

Global site tag (gtag.js) - Google Analytics