Example #1
0
 public void run() {
   while (true) {
     try {
       accessToken = WeixinUtil.getAccessToken(appid, appsecret);
       if (null != accessToken) {
         log.info(
             "获取access_token成功,有效时长{}秒 token:{}==="
                 + accessToken.getExpiresIn()
                 + "    "
                 + accessToken.getToken());
         // 休眠7000秒
         Thread.sleep((accessToken.getExpiresIn() - 200) * 1000);
       } else {
         // 如果access_token为null,60秒后再获取
         Thread.sleep(60 * 1000);
       }
     } catch (InterruptedException e) {
       try {
         Thread.sleep(60 * 1000);
       } catch (InterruptedException e1) {
         log.error("{}", e1);
       }
       log.error("{}", e);
     }
   }
 }
 public void runWriteAction(@NotNull final Runnable action) {
   final AccessToken token = acquireWriteActionLock(action.getClass());
   try {
     action.run();
   } finally {
     token.finish();
   }
 }
  /** 从缓存中获取 access token,如果未取到或者 access token 不可用则先更新再获取 */
  public static AccessToken getAccessToken() {
    String corpId = ApiConfigKit.getApiConfig().getCorpId();
    AccessToken result = accessTokenCache.get(corpId);
    if (result != null && result.isAvailable()) return result;

    refreshAccessToken();
    return accessTokenCache.get(corpId);
  }
 public <T> T runWriteAction(@NotNull final Computable<T> computation) {
   final AccessToken token = acquireWriteActionLock(computation.getClass());
   try {
     return computation.compute();
   } finally {
     token.finish();
   }
 }
  public void runReadAction(@NotNull final Runnable action) {
    final AccessToken token = acquireReadActionLockImpl(false);

    try {
      action.run();
    } finally {
      token.finish();
    }
  }
Example #6
0
 public void testAccessToken() {
   AccessToken at =
       new AccessToken(
           "oauth_token=6377362-kW0YV1ymaqEUCSHP29ux169mDeA4kQfhEuqkdvHk&oauth_token_secret=ghoTpd7LuMLHtJDyHkhYo40Uq5bWSxeCyOUAkbsOoOY&user_id=6377362&screen_name=twit4j2");
   assertEquals("6377362-kW0YV1ymaqEUCSHP29ux169mDeA4kQfhEuqkdvHk", at.getToken());
   assertEquals("ghoTpd7LuMLHtJDyHkhYo40Uq5bWSxeCyOUAkbsOoOY", at.getTokenSecret());
   assertEquals("twit4j2", at.getScreenName());
   assertEquals(6377362, at.getUserId());
 }
  public <T> T runReadAction(@NotNull final Computable<T> computation) {
    final AccessToken token = acquireReadActionLockImpl(false);

    try {
      return computation.compute();
    } finally {
      token.finish();
    }
  }
Example #8
0
  public void testDesktopClient() throws Exception {
    RequestToken rt;
    Twitter twitter = new Twitter();
    HttpClient http;
    HttpResponse response;
    String resStr;
    String authorizeURL;
    HttpParameter[] params;
    AccessToken at;
    String cookie;
    http = new HttpClient();

    // desktop client - requiring pin
    unauthenticated.setOAuthConsumer(desktopConsumerKey, desktopConsumerSecret);
    rt = unauthenticated.getOAuthRequestToken();
    // trying to get an access token without permitting the request token.
    try {
      rt.getAccessToken();
      fail();
    } catch (TwitterException te) {
      assertEquals(401, te.getStatusCode());
    }
    twitter.setOAuthConsumer(desktopConsumerKey, desktopConsumerSecret);
    rt = twitter.getOAuthRequestToken();
    // trying to get an access token without permitting the request token.
    try {
      twitter.getOAuthAccessToken(rt.getToken(), rt.getTokenSecret());
      fail();
    } catch (TwitterException te) {
      assertEquals(401, te.getStatusCode());
    }
    Map<String, String> props = new HashMap<String, String>();
    response = http.get(rt.getAuthorizationURL());
    cookie = response.getResponseHeader("Set-Cookie");
    //        http.setRequestHeader("Cookie", cookie);
    props.put("Cookie", cookie);
    resStr = response.asString();
    authorizeURL = catchPattern(resStr, "<form action=\"", "\" id=\"login_form\"");
    params = new HttpParameter[4];
    params[0] =
        new HttpParameter(
            "authenticity_token",
            catchPattern(resStr, "\"authenticity_token\" type=\"hidden\" value=\"", "\" />"));
    params[1] =
        new HttpParameter(
            "oauth_token",
            catchPattern(resStr, "name=\"oauth_token\" type=\"hidden\" value=\"", "\" />"));
    params[2] = new HttpParameter("session[username_or_email]", id1.screenName);
    params[3] = new HttpParameter("session[password]", id1.pass);
    response = http.request(new HttpRequest(RequestMethod.POST, authorizeURL, params, null, props));
    resStr = response.asString();
    String pin = catchPattern(resStr, "<div id=\"oauth_pin\">\n  ", "\n</div>");
    at = twitter.getOAuthAccessToken(rt.getToken(), rt.getTokenSecret(), pin);
    assertEquals(at.getScreenName(), id1.screenName);
    assertEquals(at.getUserId(), 6358482);
  }
Example #9
0
  /**
   * The "token endpoint" as described in <a
   * href="http://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-3.2">Section 3.2</a> of the
   * OAuth spec.
   *
   * @param authorization the HTTP Basic auth header.
   * @param formParameters the request parameters
   * @return the response
   */
  @POST
  @Path("/token")
  @Produces(MediaType.APPLICATION_JSON)
  @Consumes("application/x-www-form-urlencoded")
  public Response token(
      @HeaderParam("Authorization") String authorization,
      final MultivaluedMap<String, String> formParameters) {
    // Convert incoming parameters into internal form and validate them
    AccessTokenRequest accessTokenRequest =
        AccessTokenRequest.fromMultiValuedFormParameters(formParameters);
    BasicAuthCredentials credentials =
        BasicAuthCredentials.createCredentialsFromHeader(authorization);

    ValidationResponse vr = oAuth2Validator.validate(accessTokenRequest, credentials);
    if (!vr.valid()) {
      return sendErrorResponse(vr);
    }

    // The request looks valid, attempt to process
    String grantType = accessTokenRequest.getGrantType();
    AuthorizationRequest request;
    try {
      if (GRANT_TYPE_AUTHORIZATION_CODE.equals(grantType)) {
        request = authorizationCodeToken(accessTokenRequest);
      } else if (GRANT_TYPE_REFRESH_TOKEN.equals(grantType)) {
        request = refreshTokenToken(accessTokenRequest);
      } else if (GRANT_TYPE_CLIENT_CREDENTIALS.equals(grantType)) {
        request = clientCredentialToken(accessTokenRequest);
      } else if (GRANT_TYPE_PASSWORD.equals(grantType)) {
        request = passwordToken(accessTokenRequest);
      } else {
        return sendErrorResponse(ValidationResponse.UNSUPPORTED_GRANT_TYPE);
      }
    } catch (ValidationResponseException e) {
      return sendErrorResponse(e.v);
    }
    AccessToken token = createAccessToken(request, false);

    AccessTokenResponse response =
        new AccessTokenResponse(
            token.getToken(),
            BEARER,
            token.getExpiresIn(),
            token.getRefreshToken(),
            StringUtils.join(token.getScopes(), ' '));

    return Response.ok()
        .entity(response)
        .cacheControl(cacheControlNoStore())
        .header("Pragma", "no-cache")
        .build();
  }
Example #10
0
 private AuthorizationRequest refreshTokenToken(AccessTokenRequest accessTokenRequest) {
   AccessToken accessToken =
       accessTokenRepository.findByRefreshToken(accessTokenRequest.getRefreshToken());
   if (accessToken == null) {
     throw new ValidationResponseException(ValidationResponse.INVALID_GRANT_REFRESH_TOKEN);
   }
   AuthorizationRequest request = new AuthorizationRequest();
   request.setClient(accessToken.getClient());
   request.setPrincipal(accessToken.getPrincipal());
   request.setGrantedScopes(accessToken.getScopes());
   accessTokenRepository.delete(accessToken);
   return request;
 }
Example #11
0
 @Override
 public void onComplete(Bundle values) {
   AccessToken mAccessToken = AccessToken.parseAccessToken(values); // 从 Bundle 中解析 Token
   if (mAccessToken.isSessionValid()) {
     AccessTokenKeeper.writeAccessToken(context, mAccessToken, support); // 保存Token
     Log.i(TAG, "auth sucess token:" + mAccessToken.getToken());
     Toast.makeText(context, "授权成功", Toast.LENGTH_LONG);
   } else {
     // 当您注册的应用程序签名不正确时,就会收到错误Code,请确保签名正确
     String code = values.getString("code", "");
     Log.e(TAG, "auth fail: " + code);
     Toast.makeText(context, "授权失败", Toast.LENGTH_LONG);
   }
 }
Example #12
0
  private static synchronized AccessToken requestAccessToken() {
    AccessToken result = null;
    ApiConfig ac = ApiConfigKit.getApiConfig();
    for (int i = 0; i < 3; i++) {
      String appId = ac.getAppId();
      String appSecret = ac.getAppSecret();
      Map<String, String> queryParas =
          ParaMap.create("appid", appId).put("secret", appSecret).getData();
      String json = HttpKit.get(url, queryParas);
      result = new AccessToken(json);

      if (result.isAvailable()) break;
    }
    return result;
  }
Example #13
0
 public static void main(String[] args) throws XueqiuException, IOException {
   OAuth oAuth = new OAuth();
   String oAuthUrl = oAuth.getAuthorizeUrl("code");
   BareBonesBrowserLaunch.openURL(oAuthUrl);
   System.out.println("oAuthUrl: " + oAuthUrl);
   System.out.print("Input 'code' and hit enter: ");
   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
   String code = br.readLine();
   System.out.println("code: " + code);
   AccessToken accessToken = oAuth.getAccessTokenByCode(code);
   System.out.println("--getAccessTokenByCode--");
   System.out.println(accessToken);
   System.out.println("--getAccessTokenByRefreshToken--");
   System.out.println(oAuth.getAccessTokenByRefreshToken(accessToken.getRefreshToken()));
 }
Example #14
0
  public void testBrowserClientWithCustomCallback() throws Exception {
    RequestToken rt;
    Twitter twitter = new Twitter();
    HttpClient http;
    HttpResponse response;
    String resStr;
    String authorizeURL;
    HttpParameter[] params;
    AccessToken at;
    String cookie;
    http = new HttpClient();

    // browser client - not requiring pin / overriding callback url
    twitter = new Twitter();
    twitter.setOAuthConsumer(browserConsumerKey, browserConsumerSecret);
    rt = twitter.getOAuthRequestToken("http://yusuke.homeip.net/twitter4j/custom_callback");
    http = new HttpClient();

    System.out.println("AuthorizationURL: " + rt.getAuthorizationURL());
    response = http.get(rt.getAuthorizationURL());
    Map<String, String> props = new HashMap<String, String>();
    cookie = response.getResponseHeader("Set-Cookie");
    //        http.setRequestHeader("Cookie", cookie);
    props.put("Cookie", cookie);
    resStr = response.asString();
    authorizeURL = catchPattern(resStr, "<form action=\"", "\" id=\"login_form\"");
    params = new HttpParameter[4];
    params[0] =
        new HttpParameter(
            "authenticity_token",
            catchPattern(resStr, "\"authenticity_token\" type=\"hidden\" value=\"", "\" />"));
    params[1] =
        new HttpParameter(
            "oauth_token",
            catchPattern(resStr, "name=\"oauth_token\" type=\"hidden\" value=\"", "\" />"));
    params[2] = new HttpParameter("session[username_or_email]", id1.screenName);
    params[3] = new HttpParameter("session[password]", id1.pass);
    response = http.request(new HttpRequest(RequestMethod.POST, authorizeURL, params, null, props));
    //        response = http.post(authorizeURL, params);
    resStr = response.asString();
    String oauthVerifier = catchPattern(resStr, "&oauth_verifier=", "\">");

    at = twitter.getOAuthAccessToken(rt.getToken(), rt.getTokenSecret(), oauthVerifier);
    assertEquals(at.getScreenName(), id1.screenName);
    assertEquals(at.getUserId(), 6358482);
  }
Example #15
0
 private void setHeader(HttpUriRequest request) {
   if (!tokenIsNull()) {
     request.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken.getToken());
   }
   request.setHeader(HttpHeaders.USER_AGENT, USER_AGENT);
   request.setHeader(HttpHeaders.ACCEPT_ENCODING, "gzip,deflate");
   request.setHeader(HttpHeaders.ACCEPT_CHARSET, "utf-8;q=0.7,*;q=0.3");
   request.setHeader(HttpHeaders.HOST, "www.yammer.com");
 }
Example #16
0
 private Response sendImplicitGrantResponse(
     AuthorizationRequest authReq, AccessToken accessToken) {
   String uri = authReq.getRedirectUri();
   String fragment =
       String.format(
               "access_token=%s&token_type=bearer&expires_in=%s&scope=%s",
               accessToken.getToken(),
               accessToken.getExpiresIn(),
               StringUtils.join(authReq.getGrantedScopes(), ','))
           + appendStateParameter(authReq);
   if (authReq.getClient().isIncludePrincipal()) {
     fragment += String.format("&principal=%s", authReq.getPrincipal().getDisplayName());
   }
   return Response.seeOther(UriBuilder.fromUri(uri).fragment(fragment).build())
       .cacheControl(cacheControlNoStore())
       .header("Pragma", "no-cache")
       .build();
 }
Example #17
0
  public void testSigninWithTwitter() throws Exception {
    RequestToken rt;
    Twitter twitter = new TwitterFactory().getInstance();
    HttpClient http;
    HttpResponse response;
    String resStr;
    String authorizeURL;
    HttpParameter[] params;
    AccessToken at;
    String cookie;
    http = new HttpClient();

    // browser client - not requiring pin
    twitter.setOAuthConsumer(browserConsumerKey, browserConsumerSecret);
    rt = twitter.getOAuthRequestToken();

    Map<String, String> props = new HashMap<String, String>();
    response = http.get(rt.getAuthenticationURL());
    cookie = response.getResponseHeader("Set-Cookie");
    //        http.setRequestHeader("Cookie", cookie);
    props.put("Cookie", cookie);

    resStr = response.asString();
    authorizeURL = catchPattern(resStr, "<form action=\"", "\" id=\"login_form\"");
    params = new HttpParameter[4];
    params[0] =
        new HttpParameter(
            "authenticity_token",
            catchPattern(resStr, "\"authenticity_token\" type=\"hidden\" value=\"", "\" />"));
    params[1] =
        new HttpParameter(
            "oauth_token",
            catchPattern(resStr, "name=\"oauth_token\" type=\"hidden\" value=\"", "\" />"));
    params[2] = new HttpParameter("session[username_or_email]", id1.screenName);
    params[3] = new HttpParameter("session[password]", id1.pass);
    response = http.request(new HttpRequest(RequestMethod.POST, authorizeURL, params, null, props));

    //        response = http.post(authorizeURL, params);
    at = twitter.getOAuthAccessToken(rt.getToken(), rt.getTokenSecret());
    assertEquals(at.getScreenName(), id1.screenName);
    assertEquals(at.getUserId(), 6358482);
  }
  public static VirtualFile createTestProjectStructure(
      String tempName,
      Module module,
      String rootPath,
      Collection<File> filesToDelete,
      boolean addProjectRoots)
      throws IOException {
    File dir = FileUtil.createTempDirectory(tempName, null, false);
    filesToDelete.add(dir);

    VirtualFile vDir =
        LocalFileSystem.getInstance()
            .refreshAndFindFileByPath(dir.getCanonicalPath().replace(File.separatorChar, '/'));
    assert vDir != null && vDir.isDirectory() : dir;
    PlatformTestCase.synchronizeTempDirVfs(vDir);

    EdtTestUtil.runInEdtAndWait(
        () -> {
          AccessToken token = WriteAction.start();
          try {
            if (rootPath != null) {
              VirtualFile vDir1 =
                  LocalFileSystem.getInstance()
                      .findFileByPath(rootPath.replace(File.separatorChar, '/'));
              if (vDir1 == null) {
                throw new Exception(rootPath + " not found");
              }
              VfsUtil.copyDirectory(null, vDir1, vDir, null);
            }

            if (addProjectRoots) {
              addSourceContentToRoots(module, vDir);
            }
          } finally {
            token.finish();
          }
        });
    return vDir;
  }
        /**
         * Called when OAuth authentication has been finalized and an Access Token and Access Token
         * Secret have been provided
         *
         * @param accessToken The access token to use to do REST calls
         */
        @Override
        public void gotOAuthAccessToken(AccessToken accessToken) {
          SoomlaUtils.LogDebug(TAG, "login/onComplete");

          twitter.setOAuthAccessToken(accessToken);

          // Keep in storage for logging in without web-authentication
          KeyValueStorage.setValue(
              getTwitterStorageKey(TWITTER_OAUTH_TOKEN), accessToken.getToken());
          KeyValueStorage.setValue(
              getTwitterStorageKey(TWITTER_OAUTH_SECRET), accessToken.getTokenSecret());

          // Keep screen name since Twitter4J does not have it when
          // logging in using authenticated tokens
          KeyValueStorage.setValue(
              getTwitterStorageKey(TWITTER_SCREEN_NAME), accessToken.getScreenName());

          twitterScreenName = accessToken.getScreenName();

          RefLoginListener.success(RefProvider);

          clearListener(ACTION_LOGIN);
        }
Example #20
0
 public void setLastAccessTime(final UUID accessTokenUUID, final DateTime dateTime) {
   AccessToken accessToken = accessTokenTable.get(accessTokenUUID);
   AccessToken updatedAccessToken = accessToken.withLastAccessUTC(dateTime);
   accessTokenTable.put(accessTokenUUID, updatedAccessToken);
 }
Example #21
0
 public AccessToken generateNewAccessToken(final UserView user, final DateTime dateTime) {
   AccessToken accessToken = new AccessToken(UUID.randomUUID(), user, dateTime);
   accessTokenTable.put(accessToken.getAccessTokenId(), accessToken);
   return accessToken;
 }
 /**
  * Return the screen name of the authenticated user, or null if not authenticated.
  *
  * @return users screen name, or null.
  */
 public String getScreenName() {
   if (accessToken == null) {
     return null;
   }
   return accessToken.getScreenName();
 }
 /**
  * Return the ID of the authenticated user, or 0L if not authenticated.
  *
  * @return user ID, or 0L.
  */
 public long getUserId() {
   if (accessToken == null) {
     return 0L;
   }
   return accessToken.getId();
 }
 /**
  * Handle elevating access privileges.
  *
  * @param token
  */
 public void onAuthenticated() {
   System.out.println("User fully authenticated: " + accessToken.getScreenName());
 }
  public static void test() {
    AccessToken at = AccessTokenApi.getAccessToken();
    if (at.isAvailable()) System.out.println("access_token : " + at.getAccessToken());
    else System.out.println(at.getErrorCode() + " : " + at.getErrorMsg());

    at = AccessTokenApi.getAccessToken();
    if (at.isAvailable()) System.out.println("access_token : " + at.getAccessToken());
    else System.out.println(at.getErrorCode() + " : " + at.getErrorMsg());

    at = AccessTokenApi.getAccessToken();
    if (at.isAvailable()) System.out.println("access_token : " + at.getAccessToken());
    else System.out.println(at.getErrorCode() + " : " + at.getErrorMsg());
  }
Example #26
0
  public static AccessToken getAccessToken() {
    if (accessToken != null && accessToken.isAvailable()) return accessToken;

    refreshAccessToken();
    return accessToken;
  }