namespace spanner = ::google::cloud::spanner;
[](std::string const& project_id, std::string const& instance_id,
std::string const& database_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 options =
google::cloud::Options{}.set<google::cloud::UnifiedCredentialsOption>(
google::cloud::MakeServiceAccountCredentials(contents));
return spanner::Client(spanner::MakeConnection(
spanner::Database(project_id, instance_id, database_id), options));
}
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.
Follow these links to find examples for other *Client classes:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-22 UTC."],[[["\u003cp\u003eThis page provides access to documentation for various versions of the Spanner C++ client library, ranging from version 2.11.0 up to the latest release candidate, 2.37.0-rc.\u003c/p\u003e\n"],["\u003cp\u003eThe content includes examples of how to override the default authentication configuration using \u003ccode\u003egoogle::cloud::UnifiedCredentialsOption\u003c/code\u003e, specifically showing how to load a service account key file.\u003c/p\u003e\n"],["\u003cp\u003eThe documentation emphasizes that the service account key file example is chosen for its simplicity, and users should refer to the "Best practices for managing service account keys" guide for more detailed information.\u003c/p\u003e\n"],["\u003cp\u003eLinks are provided to find similar authentication examples for other client classes, such as \u003ccode\u003eDatabaseAdminClient\u003c/code\u003e and \u003ccode\u003eInstanceAdminClient\u003c/code\u003e, in version 2.20.0.\u003c/p\u003e\n"]]],[],null,[]]