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 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()); }
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"); }
/** * 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(); }
@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); } }
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); }