/* * The "Hello world!" of the Chrome Web Store Licensing API, in Java. This * program logs the user in with OpenID, fetches their license state with OAuth, * and prints one of these greetings as appropriate: * * 1. Hello *no* license! * 2. Hello *free trial* license! * 3. Hello *full* license! * * Copyright 2010 the Chromium Authors * * Use of this source code is governed by a BSD-style license that can be found * in the "LICENSE" file. * * Brian Kennish */ package com.example; import java.io.*; import java.net.*; import java.util.HashSet; import javax.servlet.http.*; import com.google.appengine.api.users.*; import com.google.appengine.repackaged.org.json.JSONObject; import oauth.signpost.OAuthConsumer; import oauth.signpost.basic.DefaultOAuthConsumer; /* A Google App Engine servlet. */ @SuppressWarnings("serial") public class HelloLicenseServlet extends HttpServlet { /* TODO: The app ID from the Chrome Developer Dashboard. */ public static final String APP_ID = "[INSERT APP ID HERE]"; /* TODO: The token from the Chrome Developer Dashboard. */ private static final String TOKEN = "[INSERT TOKEN HERE]"; /* TODO: The token secret from the Chrome Developer Dashboard. */ private static final String TOKEN_SECRET = "[INSERT TOKEN SECRET HERE]"; /* * The license server URL, where %s are placeholders for app and * user IDs */ public static final String SERVER_URL = "https://www.googleapis.com/chromewebstore/v1/licenses/%s/%s"; /* The consumer key. */ public static final String CONSUMER_KEY = "anonymous"; /* The consumer secret. */ public static final String CONSUMER_SECRET = CONSUMER_KEY; /* Handles "GET" requests. */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("text/html; charset=UTF-8"); UserService userService = UserServiceFactory.getUserService(); PrintWriter output = response.getWriter(); String url = request.getRequestURI(); if (userService.isUserLoggedIn()) { // Provide a logout path. User user = userService.getCurrentUser(); output.printf( "%s | Sign out

", user.getEmail(), userService.createLogoutURL(url) ); try { // Send a signed request for the user's license state. OAuthConsumer oauth = new DefaultOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); oauth.setTokenWithSecret(TOKEN, TOKEN_SECRET); URLConnection http = new URL( String.format( SERVER_URL, APP_ID, URLEncoder.encode(user.getFederatedIdentity(), "UTF-8") ) ).openConnection(); oauth.sign(http); http.connect(); // Convert the response from the license server to a string. BufferedReader input = new BufferedReader(new InputStreamReader(http.getInputStream())); String file = ""; for (String line; (line = input.readLine()) != null; file += line); input.close(); // Parse the string as JSON and display the license state. JSONObject json = new JSONObject(file); output.printf( "Hello %s license!", "YES".equals(json.get("result")) ? "FULL".equals(json.get("accessLevel")) ? "full" : "free trial" : "no" ); } catch (Exception exception) { // Dump any error. output.printf("Oops! %s", exception.getMessage()); } } else { // The user isn't logged in. // Prompt for login. output.printf( "Sign in", userService.createLoginURL( url, null, "https://www.google.com/accounts/o8/id", new HashSet() ) ); } } }