Java源码示例:com.google.auth.oauth2.UserCredentials

示例1
@Test
void gcsCredentialsJson() throws IOException {
    final Map<String, String> properties = new HashMap<>();
    properties.put("gcs.bucket.name", "test-bucket");

    final String credentialsJson = Resources.toString(
        getClass().getClassLoader().getResource("test_gcs_credentials.json"),
        StandardCharsets.UTF_8
    );
    properties.put("gcs.credentials.json", credentialsJson);

    final GcsSinkConfig config = new GcsSinkConfig(properties);
    final UserCredentials credentials = (UserCredentials) config.getCredentials();
    assertEquals("test-client-id", credentials.getClientId());
    assertEquals("test-client-secret", credentials.getClientSecret());
}
 
示例2
/**
 * Tests that the loginCustomerId can be unset when cloning the client via builder methods. This
 * is important so that users can easily change the login customer ID.
 */
@Test
public void setLoginCustomerId_canClearOnceSet() {
  Credentials credentials =
      UserCredentials.newBuilder()
          .setClientId(CLIENT_ID)
          .setClientSecret(CLIENT_SECRET)
          .setRefreshToken(REFRESH_TOKEN)
          .build();
  GoogleAdsClient client =
      GoogleAdsClient.newBuilder()
          .setCredentials(credentials)
          .setDeveloperToken(DEVELOPER_TOKEN)
          .setLoginCustomerId(1L)
          .setEnableGeneratedCatalog(enabledGeneratedCatalog)
          .build();
  client = client.toBuilder().setLoginCustomerId(null).build();
  assertNull("Unable to clear loginCustomerId", client.getLoginCustomerId());
}
 
示例3
/**
 * Tests building a client without the use of a properties file.
 */
@Test
public void buildWithoutPropertiesFile_supportsAllFields() throws IOException {
  Credentials credentials =
      UserCredentials.newBuilder()
          .setClientId(CLIENT_ID)
          .setClientSecret(CLIENT_SECRET)
          .setRefreshToken(REFRESH_TOKEN)
          .build();
  GoogleAdsClient client =
      GoogleAdsClient.newBuilder()
          .setCredentials(credentials)
          .setDeveloperToken(DEVELOPER_TOKEN)
          .setLoginCustomerId(LOGIN_CUSTOMER_ID)
          .setEnableGeneratedCatalog(enabledGeneratedCatalog)
          .setTransportChannelProvider(localChannelProvider)
          .build();
  assertGoogleAdsClient(client);
}
 
示例4
/**
 * Verifies that builder supports nullable loginCustomerId.
 */
@Test
public void build_loginCustomerId_allowsNullable() {
  Credentials credentials =
      UserCredentials.newBuilder()
          .setClientId(CLIENT_ID)
          .setClientSecret(CLIENT_SECRET)
          .setRefreshToken(REFRESH_TOKEN)
          .build();
  GoogleAdsClient client =
      GoogleAdsClient.newBuilder()
          .setCredentials(credentials)
          .setDeveloperToken(DEVELOPER_TOKEN)
          .setEnableGeneratedCatalog(enabledGeneratedCatalog)
          .build();
  assertNull("invalid login-customer-id", client.getLoginCustomerId());
}
 
示例5
/**
 * Verifies that builder does not require enableGeneratedCatalog to be set explicitly.
 */
@Test
public void build_enableGeneratedCatalog_not_required() throws IOException {
  Credentials credentials =
      UserCredentials.newBuilder()
          .setClientId(CLIENT_ID)
          .setClientSecret(CLIENT_SECRET)
          .setRefreshToken(REFRESH_TOKEN)
          .build();
  GoogleAdsClient client =
      GoogleAdsClient.newBuilder()
          .setCredentials(credentials)
          .setDeveloperToken(DEVELOPER_TOKEN)
          .setLoginCustomerId(LOGIN_CUSTOMER_ID)
          .build();
  assertGoogleAdsClient(client, LOGIN_CUSTOMER_ID, false);
}
 
示例6
/**
 * Asserts that the provided client matches expectations. Expects a login customer ID that matches
 * the provided value.
 */
private void assertGoogleAdsClient(
    GoogleAdsClient client,
    @Nullable Long loginCustomerId,
    boolean enableGeneratedCatalog)
    throws IOException {
  assertNotNull("Null client", client);

  Credentials credentials = client.getCredentials();
  assertNotNull("Null credentials", credentials);
  assertThat(credentials, Matchers.instanceOf(UserCredentials.class));
  UserCredentials userCredentials = (UserCredentials) credentials;
  assertEquals("Client ID", CLIENT_ID, userCredentials.getClientId());
  assertEquals("Client secret", CLIENT_SECRET, userCredentials.getClientSecret());
  assertEquals("Refresh token", REFRESH_TOKEN, userCredentials.getRefreshToken());

  assertEquals("Developer token", DEVELOPER_TOKEN, client.getDeveloperToken());
  assertEquals("Login customer id", loginCustomerId, client.getLoginCustomerId());
  assertEquals(
      "Enable generated catalog",
      enableGeneratedCatalog,
      client.getEnableGeneratedCatalog());
}
 
示例7
private static Credentials getUserCredentials(String credentialsPath, List<String> selectedScopes)
    throws IOException, GeneralSecurityException {
  GoogleClientSecrets clientSecrets =
      GoogleClientSecrets.load(
          JSON_FACTORY, new InputStreamReader(new FileInputStream(credentialsPath)));
  String clientId = clientSecrets.getDetails().getClientId();
  String clientSecret = clientSecrets.getDetails().getClientSecret();

  GoogleAuthorizationCodeFlow flow =
      new GoogleAuthorizationCodeFlow.Builder(
              GoogleNetHttpTransport.newTrustedTransport(),
              JSON_FACTORY,
              clientSecrets,
              selectedScopes)
          .setDataStoreFactory(new FileDataStoreFactory(DATA_STORE_DIR))
          .setAccessType("offline")
          .build();
  LocalServerReceiver receiver =
      new LocalServerReceiver.Builder().setPort(LOCAL_RECEIVER_PORT).build();
  Credential credential = new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
  return UserCredentials.newBuilder()
      .setClientId(clientId)
      .setClientSecret(clientSecret)
      .setRefreshToken(credential.getRefreshToken())
      .build();
}
 
示例8
@Test
public void testUserCredentialsWithAccessTokenFails() throws IOException,
                                                             GeneralSecurityException {
  Assume.assumeThat(Objects.requireNonNull(credentials), is(instanceOf(UserCredentials.class)));
  credentials.refresh();
  final GoogleCredentials accessTokenCredentials = GoogleCredentials.newBuilder()
      .setAccessToken(credentials.getAccessToken())
      .build();
  final GoogleIdTokenAuth idTokenAuth = GoogleIdTokenAuth.of(accessTokenCredentials);
  try {
    idTokenAuth.getToken("http://styx.foo.bar");
    fail();
  } catch (IOException e) {
    assertThat(e.getMessage(), startsWith("Principal is not a service account, unable to acquire id token:"));
  }
}
 
示例9
public ContainerRegistryAuthSupplier build() {
  final GoogleCredentials credentials = this.credentials.createScoped(scopes);

  // log some sort of identifier for the credentials, which requires looking at the
  // instance type
  if (credentials instanceof ServiceAccountCredentials) {
    final String clientEmail = ((ServiceAccountCredentials) credentials).getClientEmail();
    log.info("loaded credentials for service account with clientEmail={}", clientEmail);
  } else if (credentials instanceof UserCredentials) {
    final String clientId = ((UserCredentials) credentials).getClientId();
    log.info("loaded credentials for user account with clientId={}", clientId);
  }

  final Clock clock = Clock.systemDefaultZone();
  final DefaultCredentialRefresher refresher = new DefaultCredentialRefresher();

  return new ContainerRegistryAuthSupplier(credentials, clock, minimumExpiryMillis, refresher);
}
 
示例10
@Test
void testCredentialsPathProvided() throws IOException {
    final String credentialsPath =
        getClass().getClassLoader().getResource("test_gcs_credentials.json").getPath();
    final GoogleCredentials credentials = GoogleCredentialsBuilder.build(credentialsPath, null);
    assertTrue(credentials instanceof UserCredentials);

    final UserCredentials userCredentials = (UserCredentials) credentials;
    assertEquals("test-client-id", userCredentials.getClientId());
    assertEquals("test-client-secret", userCredentials.getClientSecret());
}
 
示例11
@Test
void testCredentialsJsonProvided() throws IOException {
    final String credentialsJson = Resources.toString(
        getClass().getClassLoader().getResource("test_gcs_credentials.json"),
        StandardCharsets.UTF_8);
    final GoogleCredentials credentials = GoogleCredentialsBuilder.build(null, credentialsJson);
    assertTrue(credentials instanceof UserCredentials);

    final UserCredentials userCredentials = (UserCredentials) credentials;
    assertEquals("test-client-id", userCredentials.getClientId());
    assertEquals("test-client-secret", userCredentials.getClientSecret());
}
 
示例12
@Test
void gcsCredentialsPath() {
    final Map<String, String> properties = new HashMap<>();
    properties.put("gcs.bucket.name", "test-bucket");
    properties.put(
        "gcs.credentials.path",
        getClass().getClassLoader().getResource("test_gcs_credentials.json").getPath());

    final GcsSinkConfig config = new GcsSinkConfig(properties);
    final UserCredentials credentials = (UserCredentials) config.getCredentials();
    assertEquals("test-client-id", credentials.getClientId());
    assertEquals("test-client-secret", credentials.getClientSecret());
}
 
示例13
private void setCredentials(Properties properties) {
  UserCredentials credentials =
      UserCredentials.newBuilder()
          .setClientId(properties.getProperty(ConfigPropertyKey.CLIENT_ID.getPropertyKey()))
          .setClientSecret(
              properties.getProperty(ConfigPropertyKey.CLIENT_SECRET.getPropertyKey()))
          .setRefreshToken(
              properties.getProperty(ConfigPropertyKey.REFRESH_TOKEN.getPropertyKey()))
          .build();
  setCredentials(credentials);
}
 
示例14
public void runExample(String clientId, String clientSecret) throws IOException {
  UserAuthorizer userAuthorizer =
      UserAuthorizer.newBuilder()
          .setClientId(ClientId.of(clientId, clientSecret))
          .setScopes(SCOPES)
          .setCallbackUri(URI.create(CALLBACK_URI))
          .build();
  URL authorizationUrl = userAuthorizer.getAuthorizationUrl(null, null, null);
  System.out.printf("Paste this url in your browser:%n%s%n", authorizationUrl);

  // Waits for the authorization code.
  System.out.println("Type the code you received here: ");
  @SuppressWarnings("DefaultCharset") // Reading from stdin, so default charset is appropriate.
  String authorizationCode = new BufferedReader(new InputStreamReader(System.in)).readLine();

  // Exchanges the authorization code for credentials and print the refresh token.
  UserCredentials userCredentials =
      userAuthorizer.getCredentialsFromCode(authorizationCode, null);
  System.out.printf("Your refresh token is: %s%n", userCredentials.getRefreshToken());

  // Prints the configuration file contents.
  Properties adsProperties = new Properties();
  adsProperties.put(ConfigPropertyKey.CLIENT_ID.getPropertyKey(), clientId);
  adsProperties.put(ConfigPropertyKey.CLIENT_SECRET.getPropertyKey(), clientSecret);
  adsProperties.put(
      ConfigPropertyKey.REFRESH_TOKEN.getPropertyKey(), userCredentials.getRefreshToken());
  adsProperties.put(
      ConfigPropertyKey.DEVELOPER_TOKEN.getPropertyKey(), "INSERT_DEVELOPER_TOKEN_HERE");

  showConfigurationFile(adsProperties);
}
 
示例15
public static void main(String[] args) {
  // Sets up the credentials for Google Ads user authentication.
  UserCredentials credentials =
      UserCredentials.newBuilder()
          .setClientId(OAUTH_CLIENT_ID)
          .setClientSecret(OAUTH_CLIENT_SECRET)
          .setRefreshToken(REFRESH_TOKEN)
          .build();

  // Creates a GoogleAdsClient with the provided credentials.
  GoogleAdsClient client =
      GoogleAdsClient.newBuilder()
          // Sets the developer token which enables API access.
          .setDeveloperToken(DEVELOPER_TOKEN)
          // Sets the OAuth credentials which provide Google Ads account access.
          .setCredentials(credentials)
          // Optional: sets the login customer ID. This is required when the Google account
          // authenticated with the refresh token does not have direct access to
          // OPERATING_CUSTOMER_ID and the access is via a manager account. In this case, specify
          // the manager account ID as LOGIN_CUSTOMER_ID.
          .setLoginCustomerId(Long.valueOf(LOGIN_CUSTOMER_ID))
          .build();

  // Uses the client configured with these credentials.
  try (GoogleAdsServiceClient googleAdsServiceClient =
      client.getLatestVersion().createGoogleAdsServiceClient()) {
    googleAdsServiceClient.search(OPERATING_CUSTOMER_ID, "SELECT campaign.id FROM campaign");
  }
}
 
示例16
public static UserCredentials fromResource(Context context, int resourceId)
        throws IOException, JSONException {
    InputStream is = context.getResources().openRawResource(resourceId);
    byte[] bytes = new byte[is.available()];
    is.read(bytes);
    JSONObject json = new JSONObject(new String(bytes, "UTF-8"));
    return new UserCredentials(
            json.getString("client_id"),
            json.getString("client_secret"),
            json.getString("refresh_token")
    );
}
 
示例17
static UserCredentials fromResource(Context context, int resourceId)
        throws IOException, JSONException {
    InputStream is = context.getResources().openRawResource(resourceId);
    byte[] bytes = new byte[is.available()];
    is.read(bytes);
    JSONObject json = new JSONObject(new String(bytes, "UTF-8"));
    return new UserCredentials(
            json.getString("client_id"),
            json.getString("client_secret"),
            json.getString("refresh_token")
    );
}
 
示例18
private static ByteBuf createRefreshRequestContent(UserCredentials credentials) {
  QueryStringEncoder formEncoder = new QueryStringEncoder("");
  formEncoder.addParam("client_id", credentials.getClientId());
  formEncoder.addParam("client_secret", credentials.getClientSecret());
  formEncoder.addParam("refresh_token", credentials.getRefreshToken());
  formEncoder.addParam("grant_type", GRANT_TYPE);
  String contentWithQuestionMark = formEncoder.toString();

  ByteBuf content = Unpooled.buffer(contentWithQuestionMark.length() - 1);
  ByteBufUtil.writeAscii(content, contentWithQuestionMark.substring(1));
  return content;
}
 
示例19
public AccessTokenProvider create(Credentials credentials) {
  if (credentials instanceof UserCredentials) {
    return new UserCredentialsAccessTokenProvider(
        googleAccountsClient, clock, (UserCredentials) credentials);
  } else if (credentials instanceof ServiceAccountCredentials) {
    return new ServiceAccountAccessTokenProvider(
        googleAccountsClient, clock, (ServiceAccountCredentials) credentials);
  } else if (credentials instanceof ComputeEngineCredentials) {
    return new ComputeEngineAccessTokenProvider(googleAccountsClient, clock);
  }
  throw new IllegalArgumentException("Unsupported credentials type: " + credentials);
}
 
示例20
private String getToken(String targetAudience, GoogleCredentials credentials)
    throws IOException, GeneralSecurityException {
  if (credentials instanceof ServiceAccountCredentials) {
    return getServiceAccountToken((ServiceAccountCredentials) credentials, targetAudience);
  } else if (credentials instanceof UserCredentials) {
    return getUserToken((UserCredentials) credentials);
  } else if (credentials instanceof ComputeEngineCredentials) {
    return getDefaultGCEIdToken(targetAudience);
  } else if (credentials instanceof ImpersonatedCredentials) {
    return getImpersonatedIdToken((ImpersonatedCredentials) credentials, targetAudience);
  } else {
    // Assume a type of service account credential
    return getServiceAccountIdTokenUsingAccessToken(credentials, targetAudience);
  }
}
 
示例21
private String getUserToken(UserCredentials credentials) throws IOException {
  log.debug("Fetching user id token");
  final TokenRequest request = new RefreshTokenRequest(
      this.httpTransport, JSON_FACTORY,
      new GenericUrl(credentials.toBuilder().getTokenServerUri()),
      credentials.getRefreshToken())
      .setClientAuthentication(new ClientParametersAuthentication(
          credentials.getClientId(), credentials.getClientSecret()))
      .setRequestInitializer(new HttpCredentialsAdapter(credentials));
  final TokenResponse response = request.execute();
  return (String) response.get("id_token");
}
 
示例22
@Test
public void testMockUserCredentials() throws IOException, GeneralSecurityException, InterruptedException {
  final MockResponse tokenResponse = new MockResponse()
      .setBody(Utils.getDefaultJsonFactory().toString(ImmutableMap.of("id_token", "test-id-token")));
  metadataServer.enqueue(tokenResponse);
  metadataServer.start();

  final AccessToken accessToken = new AccessToken("test-access-token",
      Date.from(Instant.now().plus(Duration.ofDays(1))));
  final GoogleCredentials credentials = UserCredentials.newBuilder()
      .setTokenServerUri(URI.create("http://localhost:" + metadataServer.getPort() + "/get-test-token"))
      .setAccessToken(accessToken)
      .setRefreshToken("user-refresh-token")
      .setClientId("user-id")
      .setClientSecret("user-secret")
      .build();
  Assume.assumeThat(credentials, is(instanceOf(UserCredentials.class)));
  final GoogleIdTokenAuth idTokenAuth = GoogleIdTokenAuth.of(credentials);
  final Optional<String> token = idTokenAuth.getToken("http://styx.foo.bar");
  assertThat(token, is(Optional.of("test-id-token")));

  final RecordedRequest recordedRequest = metadataServer.takeRequest();
  final Map<String, String> requestBody = Splitter.on('&').withKeyValueSeparator('=')
      .split(recordedRequest.getBody().readUtf8());
  assertThat(requestBody, is(ImmutableMap.of(
      "grant_type", "refresh_token",
      "refresh_token", "user-refresh-token",
      "client_id", "user-id",
      "client_secret", "user-secret")));
  assertThat(recordedRequest.getPath(), is("/get-test-token"));
  assertThat(recordedRequest.getHeader("Authorization"), is("Bearer test-access-token"));
}
 
示例23
private static boolean canAcquireIdToken(GoogleCredentials credentials)
    throws IOException, GeneralSecurityException {
  final GoogleIdTokenAuth idTokenAuth = GoogleIdTokenAuth.of(credentials);
  final String targetAudience = "http://styx.foo.bar";
  final Optional<String> token = idTokenAuth.getToken(targetAudience);
  final GoogleIdToken verifiedToken = VERIFIER.verify(token.orElseThrow());
  assertThat(verifiedToken, is(notNullValue()));
  if (!(credentials instanceof UserCredentials)) {
    // TODO: can we procure user id tokens with the styx service audience?
    assertThat(verifiedToken.verifyAudience(ImmutableList.of(targetAudience)), is(true));
  }
  return true;
}
 
示例24
public void runExample(String clientId, String clientSecret, String loginEmailAddressHint)
    throws Exception {
  // Creates an anti-forgery state token as described here:
  // https://developers.google.com/identity/protocols/OpenIDConnect#createxsrftoken
  String state = new BigInteger(130, new SecureRandom()).toString(32);

  // Creates an HTTP server that will listen for the OAuth2 callback request.
  URI baseUri;
  UserAuthorizer userAuthorizer;
  AuthorizationResponse authorizationResponse = null;
  try (SimpleCallbackServer simpleCallbackServer = new SimpleCallbackServer()) {
    userAuthorizer =
        UserAuthorizer.newBuilder()
            .setClientId(ClientId.of(clientId, clientSecret))
            .setScopes(SCOPES)
            .setCallbackUri(URI.create(OAUTH2_CALLBACK))
            .build();
    baseUri = URI.create("http://localhost:" + simpleCallbackServer.getLocalPort());
    System.out.printf(
        "Paste this url in your browser:%n%s%n",
        userAuthorizer.getAuthorizationUrl(loginEmailAddressHint, state, baseUri));

    // Waits for the authorization code.
    simpleCallbackServer.accept();
    authorizationResponse = simpleCallbackServer.authorizationResponse;
  }

  if (authorizationResponse == null || authorizationResponse.code == null) {
    throw new NullPointerException(
        "OAuth2 callback did not contain an authorization code: " + authorizationResponse);
  }

  // Confirms that the state in the response matches the state token used to generate the
  // authorization URL.
  if (!state.equals(authorizationResponse.state)) {
    throw new IllegalStateException("State does not match expected state");
  }

  // Exchanges the authorization code for credentials and print the refresh token.
  UserCredentials userCredentials =
      userAuthorizer.getCredentialsFromCode(authorizationResponse.code, baseUri);
  System.out.printf("Your refresh token is: %s%n", userCredentials.getRefreshToken());

  // Prints the configuration file contents.
  Properties adsProperties = new Properties();
  adsProperties.put(ConfigPropertyKey.CLIENT_ID.getPropertyKey(), clientId);
  adsProperties.put(ConfigPropertyKey.CLIENT_SECRET.getPropertyKey(), clientSecret);
  adsProperties.put(
      ConfigPropertyKey.REFRESH_TOKEN.getPropertyKey(), userCredentials.getRefreshToken());
  adsProperties.put(
      ConfigPropertyKey.DEVELOPER_TOKEN.getPropertyKey(), "INSERT_DEVELOPER_TOKEN_HERE");

  showConfigurationFile(adsProperties);
}
 
示例25
UserCredentialsAccessTokenProvider(
    WebClient googleAccountsClient, Clock clock, UserCredentials credentials) {
  super(googleAccountsClient, clock);
  refreshRequestContent = createRefreshRequestContent(credentials);
}
 
示例26
/**
 * The credentials provided by this object originate from the following sources:
 * <ul>
 *     <li>*.credentials.location: Credentials built from JSON content inside the file pointed
 *     to by this property,</li>
 *     <li>*.credentials.encoded-key: Credentials built from JSON String, encoded on
 *     base64,</li>
 *     <li>Google Cloud Client Libraries default credentials provider.</li>
 * </ul>
 *
 * <p>If credentials are provided by one source, the next sources are discarded.
 * @param credentialsSupplier provides properties that can override OAuth2
 * scopes list used by the credentials, and the location of the OAuth2 credentials private
 * key.
 * @throws IOException if an issue occurs creating the DefaultCredentialsProvider
 */
public DefaultCredentialsProvider(CredentialsSupplier credentialsSupplier) throws IOException {
	List<String> scopes = resolveScopes(credentialsSupplier.getCredentials().getScopes());
	Resource providedLocation = credentialsSupplier.getCredentials().getLocation();
	String encodedKey = credentialsSupplier.getCredentials().getEncodedKey();

	if (!StringUtils.isEmpty(providedLocation)) {
		this.wrappedCredentialsProvider = FixedCredentialsProvider
				.create(GoogleCredentials.fromStream(
						providedLocation.getInputStream())
						.createScoped(scopes));
	}
	else if (!StringUtils.isEmpty(encodedKey)) {
		this.wrappedCredentialsProvider = FixedCredentialsProvider.create(
				GoogleCredentials.fromStream(
						new ByteArrayInputStream(Base64.getDecoder().decode(encodedKey)))
						.createScoped(scopes));
	}
	else {
		this.wrappedCredentialsProvider = GoogleCredentialsProvider.newBuilder()
				.setScopesToApply(scopes)
				.build();
	}

	try {
		Credentials credentials = this.wrappedCredentialsProvider.getCredentials();

		if (LOGGER.isInfoEnabled()) {
			if (credentials instanceof UserCredentials) {
				LOGGER.info("Default credentials provider for user "
						+ ((UserCredentials) credentials).getClientId());
			}
			else if (credentials instanceof ServiceAccountCredentials) {
				LOGGER.info("Default credentials provider for service account "
						+ ((ServiceAccountCredentials) credentials).getClientEmail());
			}
			else if (credentials instanceof ComputeEngineCredentials) {
				LOGGER.info("Default credentials provider for Google Compute Engine.");
			}
			LOGGER.info("Scopes in use by default credentials: " + scopes.toString());
		}
	}
	catch (IOException ioe) {
		LOGGER.warn("No core credentials are set. Service-specific credentials " +
				"(e.g., spring.cloud.gcp.pubsub.credentials.*) should be used if your app uses "
				+ "services that require credentials.", ioe);
	}
}
 
示例27
@Test
public void testUserCredentials() throws IOException, GeneralSecurityException {
  Assume.assumeThat(credentials, is(instanceOf(UserCredentials.class)));
  assertThat(canAcquireIdToken(credentials), is(true));
}
 
示例28
/**
 * Generates access tokens for the Assistant based on a credentials JSON file.
 *
 * @param context Application context
 * @param resourceId The resource that contains the project credentials
 *
 * @return A {@link UserCredentials} object which can be used by the Assistant.
 * @throws IOException If the resource does not exist.
 * @throws JSONException If the resource is incorrectly formatted.
 */
public static UserCredentials generateCredentials(Context context, int resourceId)
        throws IOException, JSONException {
    return Credentials.fromResource(context, resourceId);
}
 
示例29
/**
 * Sets the credentials for the user.
 *
 * @param userCredentials Credentials generated by
 *    {@link EmbeddedAssistant#generateCredentials(Context, int)}.
 * @return Returns this builder to allow for chaining.
 */
public Builder setCredentials(UserCredentials userCredentials) {
    mEmbeddedAssistant.mUserCredentials = userCredentials;
    return this;
}