Override the authentication configuration

You can override this default using google::cloud::UnifiedCredentialsOption. The following example shows how to explicitly load a service account key file.

  namespace pubsub = ::google::cloud::pubsub;
  using ::google::cloud::Options;
  [](std::string project_id, std::string topic_id, std::string const& keyfile) {
    auto is = std::ifstream(keyfile);
    is.exceptions(std::ios::badbit);
    auto contents = std::string(std::istreambuf_iterator<char>(is.rdbuf()), {});
    auto topic = pubsub::Topic(std::move(project_id), std::move(topic_id));
    return pubsub::Publisher(pubsub::MakePublisherConnection(
        std::move(topic),
        Options{}.set<google::cloud::UnifiedCredentialsOption>(
            google::cloud::MakeServiceAccountCredentials(contents))));
  }

Keep in mind that we chose this as an example because it is relatively easy to understand. Consult the Best practices for managing service account keys guide for more details.

See Also

Authentication Components - for more information on the factory functions to create google::cloud::Credentials objects. Follow these links to find examples for other *Client classes: