应用程序登录的Google Plus凭据

时间:2015-03-20 18:48:06

标签: google-app-engine google-plus

我正在创建一个应用,我想确认用户在Java环境中使用Google凭据。它可以使用谷歌API完成,但我不知道如何将其编码为servlet。

我找到了一个代码片段来授权凭据,但AuthorizationCodeInstalledApp()抛出错误,我不确定使用哪个api。

private static Credential authorize() throws Exception {
    // load client secrets
    GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
        new InputStreamReader(Test.class.getResourceAsStream("/client_secrets.json")));
    if (clientSecrets.getDetails().getClientId().startsWith("Enter")
        || clientSecrets.getDetails().getClientSecret().startsWith("Enter ")) {
      System.out.println(
          "Enter Client ID and Secret from https://code.google.com/apis/console/?api=plus "
          + "into plus-cmdline-sample/src/main/resources/client_secrets.json");
      System.exit(1);
    }
    // set up authorization code flow
    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
        httpTransport, JSON_FACTORY, clientSecrets,
        Collections.singleton(PlusScopes.PLUS_ME)).setDataStoreFactory(
        dataStoreFactory).build();
    // authorize
    return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
  }

希望有人可以帮助我,并让我知道这个过程会很棒......

1 个答案:

答案 0 :(得分:2)

如果你真的在编写一个在Google AppEngine下运行的servlet,那要容易得多。

import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

...

@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws IOException, ServletException {
  UserService userService = UserServiceFactory.getUserService();
  User currentUser = userService.getCurrentUser();
  if (currentUser == null) {
    resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
  }
  else {
    // show the view
  }
}