Exemple #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);
     }
   }
 }
Exemple #2
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());
 }
Exemple #3
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");
 }
Exemple #4
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();
  }
Exemple #5
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);
   }
 }
Exemple #6
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();
 }
        /**
         * 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);
        }