从谷歌api存储的凭据重用java
我已成功授权我的桌面应用程序。 它存储一个名为StoredCredential
的文件。 为了不必每次运行应用程序时都将复制URL保存到浏览器,接受等步骤,我想使用我已存储的凭据。
我的代码到目前为止:
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( httpTransport, JSON_FACTORY, CLIENT_ID, CLIENT_SECRET, SCOPE) .setDataStoreFactory(dataStoreFactory) .setApprovalPrompt("auto").setAccessType("offline").build(); // System.out.println("flow success"); String url = flow .newAuthorizationUrl() .setRedirectUri(REDIRECT_URI) .build(); System.out.println("Please open the following URL in your browser then " + "type the authorization code:"); System.out.println(" " + url); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String code = br.readLine(); GoogleTokenResponse tokenResponse = flow.newTokenRequest(code).setRedirectUri(REDIRECT_URI).execute(); GoogleCredential credential = new GoogleCredential .Builder() .setTransport(new NetHttpTransport()) .setJsonFactory(new JacksonFactory()) .setClientSecrets(CLIENT_ID, CLIENT_SECRET) .addRefreshListener(new CredentialRefreshListener() { @Override public void onTokenResponse( Credential credential, TokenResponse tokenResponse) throws IOException { System.out.println("Token Refreshed Succesfully"); } @Override public void onTokenErrorResponse( Credential credential, TokenErrorResponse tokenErrorResponse) throws IOException { System.out.println("ERROR WITH TOKEN WTF?"); }}) .build();
如何读取存储的凭据并绕过命令行提示符?
我想的是:
if (stored cred exists) { try { // use } catch { // prompt the user } }
您可以从存储的凭据创建GoogleCredential对象,如下所示:
HttpTransport httpTransport = new NetHttpTransport(); JsonFactory jsonFactory = new JacksonFactory(); GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(jsonFactory) .setClientSecrets("client_id", "client_secret").build(); credential.setAccessToken("access_token");
buildEmptyCredential() .setRefreshToken(storedCredential.getRefreshToken()) .setAccessToken(storedCredential.getAccessToken()) .setExpirationTimeMilliseconds(storedCredential.getExpirationTimeMilliseconds()); public Credential buildEmptyCredential() { try { return new GoogleCredential.Builder() .setClientSecrets(Utils.getClientCredential()) .setTransport(new NetHttpTransport()) .setJsonFactory(Constant.JSON_FACTORY).build(); } catch (IOException e) { e.printStackTrace(); } return null; }
- 当我尝试初始化GoogleMap对象时,我得到一个NullPointerException
- 检索有关Google People API(Java)的联系人的信息
- Google ClientLogin身份validation
- 将经度和经度传递给Android中的Google API地方搜索
- 问题com.google.gdata.util.ResourceNotFoundException:Google Analytic无法找到
- 使用工具:overrideLibrary =“org.springframework.android.rest.test”强制使用
- 没有MapActivity的MapView
- Google Admin SDK目录API(Java)中的members.list()
- 如何使用服务帐户创建Google电子表格并与java中的其他Google用户共享?