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

How to fetch access token in Google AppEngine (OAuth 2.0) us

 
阅读更多
    package com.login.client;
    import java.io.BufferedReader;
    import java.io.ByteArrayInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.List;
    import com.google.appengine.api.urlfetch.HTTPHeader;
    import com.google.appengine.api.urlfetch.HTTPMethod;
    import com.google.appengine.api.urlfetch.HTTPRequest;
    import com.google.appengine.api.urlfetch.HTTPResponse;
    import com.google.appengine.api.urlfetch.URLFetchService;
    import com.google.appengine.api.urlfetch.URLFetchServiceFactory;
    public class FetchUrl {
    private static String client_id = "<Client ID>";
    private static String client_secret = "<client_secret>";
    private static String redirectURL = "http://gfksgnbgfcv.appspot.com/index2.jsp";
    private static URLFetchService fetchService;
    public static String getParseValue(String code){
    HTTPResponse httpResponse=null;
    try {
    String urlStr="https://accounts.google.com/o/oauth2/token";
    URL url = new URL(urlStr);
    HTTPMethod method=HTTPMethod.POST;
    HTTPRequest httpRequest = new HTTPRequest(url,method);
    fetchService = URLFetchServiceFactory.getURLFetchService();
    httpRequest.setHeader(new HTTPHeader("Content-Type", "application/x-www-form-urlencoded"));
    httpRequest.setHeader(new HTTPHeader("Content-length", "250"));
    httpRequest.addHeader(new HTTPHeader("code", code));
    httpRequest.addHeader(new HTTPHeader("client_id", client_id));
    httpRequest.addHeader(new HTTPHeader("client_secret", client_secret));
    httpRequest.addHeader(new HTTPHeader("redirect_uri", redirectURL));
    httpRequest.addHeader(new HTTPHeader("scope", ""));
    httpRequest.addHeader(new HTTPHeader("grant_type", "authorization_code"));
    httpResponse = fetchService.fetch(httpRequest);
    InputStream in=getContentAsStream(httpResponse);
    BufferedReader reader = new BufferedReader( new InputStreamReader(in));
    String line;
    String output="";
    while ((line = reader.readLine()) != null) {
    output=output+line;
    }
    reader.close();
    return output;
    }catch(Exception e){
    e.printStackTrace();
    System.out.println(e.getMessage());
    return e.getMessage();
    }
    }
    public static byte[] getContentAsBytes(HTTPResponse httpResponse) {
    return httpResponse.getContent();
    }
    public static InputStream getContentAsStream(HTTPResponse httpResponse) {
    return new ByteArrayInputStream(getContentAsBytes(httpResponse));
    }
    }
package com.login.client;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;

import com.google.appengine.api.urlfetch.HTTPHeader;
import com.google.appengine.api.urlfetch.HTTPMethod;
import com.google.appengine.api.urlfetch.HTTPRequest;
import com.google.appengine.api.urlfetch.HTTPResponse;
import com.google.appengine.api.urlfetch.URLFetchService;
import com.google.appengine.api.urlfetch.URLFetchServiceFactory;

public class FetchUrl {
	private static String client_id = "<Client ID>";
	private static String client_secret = "<client_secret>";
	private static String redirectURL = "http://gfksgnbgfcv.appspot.com/index2.jsp";
	private static URLFetchService fetchService;
	public static String getParseValue(String code){
		HTTPResponse httpResponse=null;
		  try {
		 String urlStr="https://accounts.google.com/o/oauth2/token";
		 URL url = new URL(urlStr);
		 HTTPMethod method=HTTPMethod.POST;
		 HTTPRequest httpRequest = new HTTPRequest(url,method);
		 fetchService = URLFetchServiceFactory.getURLFetchService();
		 httpRequest.setHeader(new HTTPHeader("Content-Type", "application/x-www-form-urlencoded"));
		 httpRequest.setHeader(new HTTPHeader("Content-length", "250"));
		 httpRequest.addHeader(new HTTPHeader("code", code));
		 httpRequest.addHeader(new HTTPHeader("client_id", client_id));
		 httpRequest.addHeader(new HTTPHeader("client_secret", client_secret));
		 httpRequest.addHeader(new HTTPHeader("redirect_uri", redirectURL));
		 httpRequest.addHeader(new HTTPHeader("scope", ""));
		 httpRequest.addHeader(new HTTPHeader("grant_type", "authorization_code"));
	     httpResponse = fetchService.fetch(httpRequest);
	     InputStream in=getContentAsStream(httpResponse);
		  BufferedReader reader = new BufferedReader( new InputStreamReader(in));
		  String line;
		  String output="";
		  while ((line = reader.readLine()) != null) {
			  output=output+line;
          }
          reader.close();
          return output;
		  }catch(Exception e){
			  e.printStackTrace();
			  System.out.println(e.getMessage());
			  return e.getMessage();
		  }
		  
	}
	public static byte[] getContentAsBytes(HTTPResponse httpResponse) {
	      return httpResponse.getContent();
	    }

	    public static InputStream  getContentAsStream(HTTPResponse httpResponse) {
	      return new ByteArrayInputStream(getContentAsBytes(httpResponse));
	    }
}


分享到:
评论

相关推荐

    Google App Engine文档

    **Google App Engine**是Google提供的一种云计算平台,用于构建和托管Web应用程序。它允许开发者使用Python、Java、Go或PHP等语言编写应用,并在Google的基础设施上运行,无需关心服务器维护、扩展性和高可用性等...

    Google App Engine Documentation

    在“google-appengine-docs-20081003”这个压缩包中,可能包含了早期版本(2008年10月3日)的Google App Engine开发指南、API参考、最佳实践和示例代码等内容。这些文档帮助开发者了解如何利用Google App Engine构建...

    google_appengine_1.9.50.7z

    这个"google_appengine_1.9.50.7z"是一个压缩包,包含了Google App Engine的Python SDK版本1.9.50。这个SDK是开发人员用来在Google的基础设施上构建和部署Python应用程序的工具集。 首先,我们要了解Google App ...

    google_appengine_1.9.50.zip

    这个"google_appengine_1.9.50.zip"压缩包包含了 Google App Engine 的 Python SDK,版本为1.9.50。 **Google App Engine 的主要特点:** 1. **自动缩放**:根据应用程序的需求,Google App Engine 可以自动调整...

    google app engine开发实例

    使用Python的`google.appengine.ext.db`库,你可以定义数据模型类,这些类对应于Datastore中的实体。通过创建这些类的实例并调用`put()`方法,可以将数据插入到Datastore中。例如: ```python from google.app...

    Google AppEngine 入门

    【Google AppEngine 入门】 Google AppEngine 是一个由谷歌推出的云服务平台,旨在为开发者提供构建、运行和扩展Web应用程序的工具。它允许开发者利用谷歌的基础设施,即强大的计算资源和存储能力,来托管和运行...

    Google App Engine 帮助文档

    **Google App Engine 知识点详解** Google App Engine(GAE)是谷歌提供的一款托管服务,它允许开发者在谷歌的基础设施上运行自己的应用程序。这款服务提供了丰富的功能,包括动态网站托管、数据库服务、任务队列...

    Programming Google App Engine, 2nd Edition

    《Programming Google App Engine, 2nd Edition》是关于开发Google App Engine应用的权威指南,针对的是第二版内容,提供高清的epub和pdf两种格式。这本书深入探讨了如何利用Google的云计算平台构建高性能、可扩展的...

    Google App Engine book

    《Google App Engine实战》这本书是关于使用Google的云计算平台App Engine进行应用开发的详细指南。Google App Engine是一个全面托管的服务,允许开发者构建和运行在Google的基础设施上,提供了高可用性和可扩展性。...

    云端代码Google App Engine编程指南

    Java应用的配置文件是`appengine-web.xml`,用于定义应用属性和服务。 **三、Google App Engine的关键特性** 1. **数据存储:Cloud Datastore** App Engine的NoSQL数据库,提供强一致性读取和最终一致性写入。...

    Google App Engine API 大全

    **Google App Engine (GAE) API 大全** Google App Engine 是一个托管平台,它允许开发者使用特定的API和框架来构建、部署和运行Web应用程序。这个平台支持多种编程语言,其中Java是其中之一。在本指南中,我们将...

    离线 google app engine 文档

    Google App Engine 是一个由 Google 提供的平台,用于构建和托管 web 应用程序。它提供了服务器、数据库、存储和一系列服务,使开发者能够专注于编写应用程序的代码,而无需关心基础设施的运维。这个离线文档是针对 ...

    Programming Google App Engine

    《Programming Google App Engine》是一本深入探讨如何使用谷歌应用引擎(Google App Engine)开发网络应用程序的专业指南。这本书英文版为开发者提供了全面的指导,帮助他们掌握在GAE平台上构建、部署和管理应用...

    Python-OAuthLib一个OAuth请求签名逻辑通用完整的实现

    例如,对于OAuth 1.0a,可以使用`oauth_request()`函数生成签名后的请求,而对于OAuth 2.0,可能需要调用`fetch_token()`来获取访问令牌。 `oauthlib-oauthlib-31cae75`这个文件名可能指的是OAuthLib库的某个特定...

    在Google App Engine上开发Flex应用(含简单示例源码)

    在Google App Engine上开发Flex应用是一项技术性强且充满挑战的任务,它涉及到多个技术栈的集成。Google App Engine(GAE)是一个基于云的平台,用于构建和运行Web应用程序,而Flex是一种用于创建富互联网应用程序...

    Google Apps Engine for Linux (google_appengine_1.9.7.zip 源码包)

    Google App Engine 是一种让您可以在 Google 的基础架构上运行您的网络应用程序。Google App Engine 应用程序易于构建和维护,并可根据您的访问量和数据存储需要的增长轻松扩展。使用 Google App Engine,将不再需要...

    Google App Engine 开发 源代码

    7. **文件结构**:在提供的`apps`文件夹中,可能包含了GAE应用的源代码文件,如Python的`.py`文件,Java的`.java`文件,或者是配置文件,如`app.yaml`或`appengine-web.xml`,这些文件定义了应用的配置信息,如服务...

    云端代码:利用Google.AppEngine编程.源代码

    【Google AppEngine编程详解】 Google App Engine(GAE)是Google提供的一项托管服务,它允许开发者在Google的基础设施上运行自己的应用程序。这个平台基于云计算,为开发者提供了强大的资源,包括服务器、数据库和...

    GoogleAppEngine api 手册

    **Google App Engine API 手册** Google App Engine 是一个由 Google 提供的平台,用于构建和托管基于云计算的应用程序。这个平台提供了丰富的服务,让开发者能够利用 Google 的基础设施来运行他们的应用程序,无需...

    GoogleAppEngine-appengine-python-sdk-1.9.24

    此版本为GoogleAppEngine-appengine-python-sdk-1.9.24,发布于2015年7月28日。 **一、Python支持** Google App Engine SDK for Python提供了对Python 2.7版本的支持。Python是一种高级编程语言,以其简洁易读的...

Global site tag (gtag.js) - Google Analytics