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(); } }
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(); } }
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); }
/** * 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(); }
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; }
@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 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; }
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())); }
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); }
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"); }
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(); }
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); }
public void setLastAccessTime(final UUID accessTokenUUID, final DateTime dateTime) { AccessToken accessToken = accessTokenTable.get(accessTokenUUID); AccessToken updatedAccessToken = accessToken.withLastAccessUTC(dateTime); accessTokenTable.put(accessTokenUUID, updatedAccessToken); }
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()); }
public static AccessToken getAccessToken() { if (accessToken != null && accessToken.isAvailable()) return accessToken; refreshAccessToken(); return accessToken; }