⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 handletokenservlet.java

📁 google的gdata api包
💻 JAVA
字号:
/* Copyright (c) 2006 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package sample.authsub.src;import com.google.gdata.client.http.AuthSubUtil;import com.google.gdata.util.AuthenticationException;import java.io.IOException;import java.security.GeneralSecurityException;import java.util.Iterator;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Handles the processing of an AuthSub token. * <p> * The user will login to the Google account and lend permission for * this service to impersonate the user.  Upon completion of the login * and permission-grant, the user will be redirected to this servlet * with the token in the URL. * *  */public class HandleTokenServlet extends HttpServlet {  protected void doGet(HttpServletRequest req, HttpServletResponse resp)      throws ServletException, IOException {    // Retrieve the AuthSub token assigned by Google    String token = AuthSubUtil.getTokenFromReply(req.getQueryString());    if (token == null) {      resp.sendError(HttpServletResponse.SC_BAD_REQUEST,                     "No token specified.");      return;    }    // Exchange the token for a session token    String sessionToken;    try {      sessionToken =        AuthSubUtil.exchangeForSessionToken(token,                                            Utility.getPrivateKey());    } catch (IOException e1) {      resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,                     "Exception retrieving session token.");      return;    } catch (GeneralSecurityException e1) {      resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,                     "Security error while retrieving session token.");      return;    } catch (AuthenticationException e) {      resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,                     "Server rejected one time use token.");      return;    }    try {      // Sanity checking usability of token      Map<String, String> info =        AuthSubUtil.getTokenInfo(sessionToken, Utility.getPrivateKey());      for (Iterator<String> iter = info.keySet().iterator(); iter.hasNext();) {        String key = iter.next();        System.out.println("\t(key, value): (" + key + ", " + info.get(key)                           + ")");      }    } catch (IOException e1) {      resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,                     "Exception retrieving info for session token.");      return;    } catch (GeneralSecurityException e1) {      resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,                     "Security error while retrieving session token info.");      return;    } catch (AuthenticationException e) {      resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,                     "Auth error retrieving info for session token: " +                     e.getMessage());      return;    }    // Retrieve the authentication cookie to identify user    String principal =      Utility.getCookieValueWithName(req.getCookies(), Utility.LOGIN_COOKIE_NAME);    if (principal == null) {      resp.sendError(HttpServletResponse.SC_BAD_REQUEST,                     "Unidentified principal.");      return;    }    // Store the token    TokenManager.storeToken(principal, sessionToken);    // Redirect to main.jsp where the token will be used    StringBuffer continueUrl = req.getRequestURL();    int index = continueUrl.lastIndexOf("/");    continueUrl.delete(index, continueUrl.length());    continueUrl.append(LoginServlet.NEXT_URL);    resp.sendRedirect(continueUrl.toString());  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -