コード例 #1
0
ファイル: TestDatastore.java プロジェクト: jbyler/morphia
  private void doInserts(final boolean useBulkWriteOperations) {
    getMorphia().setUseBulkWriteOperations(useBulkWriteOperations);
    final DBCollection collection = getDs().getCollection(FacebookUser.class);
    collection.remove(new BasicDBObject());
    final int count = 250000;
    List<FacebookUser> list = new ArrayList<FacebookUser>(count);
    for (int i = 0; i < count; i++) {
      list.add(new FacebookUser(i, "User " + i));
    }

    getAds().insert(list, WriteConcern.UNACKNOWLEDGED);

    Awaitility.await()
        .atMost(30, TimeUnit.SECONDS)
        .until(
            new Callable<Boolean>() {
              @Override
              public Boolean call() throws Exception {
                return collection.count() == count;
              }
            });
    assertEquals(count, collection.count());

    for (FacebookUser user : list) {
      Assert.assertNotNull(user.getId());
    }
  }
コード例 #2
0
ファイル: Facebook.java プロジェクト: KCastillo/WebServices
 public FacebookUser getFacebookUser(FacebookToken token) throws IOException, JSONException {
   String authURL = getGraphAccessURL(token.getAccessToken());
   URL url = new URL(authURL);
   String response = this.getResponseFor(url);
   FacebookUser facebookUser = new FacebookUser();
   facebookUser.load(response);
   return facebookUser;
 }
 @Override
 public Authentication authenticate(Authentication authentication) throws AuthenticationException {
   Assert.isInstanceOf(
       FacebookAuthenticationToken.class,
       authentication,
       "Only FacebookAuthenticationProvider is supported");
   Collection<GrantedAuthority> authorities = generateAuthorities();
   FacebookUser facebookUser = facebookService.findUser();
   FacebookAuthenticationToken token =
       new FacebookAuthenticationToken(facebookUser.getName(), null, authorities);
   token.setDetails(facebookUser);
   return token;
 }
コード例 #4
0
  // https://developers.facebook.com/docs/howtos/login/server-side-login/#step1
  @Override
  public boolean preHandle(final HttpServletRequest req, final HttpServletResponse res)
      throws Exception {
    final String code = getParamOrCookieValue(req, "code", "fb_code");
    if (Strings.isNullOrEmpty(code)) {
      redirectToLoginDialog(res);
      return false;
    }

    final String sessionState = getParamOrCookieValue(req, "state", "fb_sessionState");
    if (Strings.isNullOrEmpty(sessionState)) {
      return false;
    }

    if (req.getParameter("signout") != null) {
      this.client.logout();
      deleteSessionCookies(res);
      res.sendRedirect(this.fbRedirectAfterLogout);
      return false;
    }

    String accessToken = readAccessToken(code);
    if (Strings.isNullOrEmpty(accessToken)) {
      redirectToLoginDialog(res);
      return false;
    }

    final String basicUserInfo = getBasicUserInfo(accessToken);
    LOG.info(basicUserInfo);

    final FacebookUser fbUser = deserializeFacebookUser(basicUserInfo);

    final String userName = fbUser.getId();
    final boolean userExists = doesUserExist(userName);
    if (userExists) {
      setAuthenticationCookies(res, code, sessionState, userName);
      res.sendRedirect(this.fbRedirectAfterLogin);
      return false;
    }

    // TODO: Remove "#1:" since it's probably in default userstore
    this.client.impersonate("#1:esocial");

    final CreateUserParams createUserParams = new CreateUserParams();
    UserInfo userInfo = new UserInfo();
    createUserParams.username = fbUser.getId();
    createUserParams.displayName = fbUser.getName();
    createUserParams.password = createPasswordHash(fbUser);
    createUserParams.userstore = "facebook";
    createUserParams.email = fbUser.getUserName() + "@facebook.com";

    userInfo.setFirstName(fbUser.getFirstName());
    userInfo.setLastName(fbUser.getLastName());
    userInfo.setNickName(fbUser.getUserName());
    userInfo.setPersonalId(fbUser.getId());

    createUserParams.userInfo = userInfo;

    this.client.createUser(createUserParams);

    final JoinGroupsParams joinGroupsParams = new JoinGroupsParams();
    // joinGroupsParams.group = "#2:Facebook";
    joinGroupsParams.groupsToJoin = new String[] {"#2:Facebook"};
    joinGroupsParams.user = "******" + userName;

    this.client.joinGroups(joinGroupsParams);
    setAuthenticationCookies(res, code, sessionState, userName);
    res.sendRedirect(this.fbRedirectAfterLogin);

    return false;
  }
コード例 #5
0
 private String createPasswordHash(final FacebookUser user) {
   final String id = user.getId();
   return Hashing.sha256().hashString(id).toString();
 }