blob: e10078c330a142b8a3a01a9fba125d4dca75bb89 [file] [log] [blame]
[email protected]e5e894ff2012-09-06 02:18:471// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]6386cf52012-09-07 04:26:375#ifndef GOOGLE_APIS_GOOGLE_API_KEYS_H_
6#define GOOGLE_APIS_GOOGLE_API_KEYS_H_
[email protected]e5e894ff2012-09-06 02:18:477
[email protected]e03604b2013-01-10 23:38:228// If you add more includes to this file, you also need to add them to
9// google_api_keys_unittest.cc.
[email protected]e5e894ff2012-09-06 02:18:4710#include <string>
11
12// These functions enable you to retrieve keys to use for Google APIs
13// such as Translate and Safe Browsing.
14//
15// You can retrieve either an "API key" (sometimes called a developer
16// key) which identifies you (or the company you work for) as a
17// developer, or you can retrieve the "client ID" and "client secret"
18// used by you (or the company you work for) to generate OAuth2
19// requests.
20//
21// Each developer (or group of developers working together for a
22// single company) must request a Google API key and the client ID and
23// client secret for OAuth2. See
24// https://developers.google.com/console/help/ and
25// https://developers.google.com/console/.
26//
27// The keys must either be provided using preprocessor variables (set
28// via e.g. ~/.gyp/include.gypi). Alternatively, they can be
29// overridden at runtime using environment variables of the same name.
30//
31// The names of the preprocessor variables (or environment variables
32// to override them at runtime) are as follows:
33// - GOOGLE_API_KEY: The API key, a.k.a. developer key.
34// - GOOGLE_DEFAULT_CLIENT_ID: If set, this is used as the default for
35// all client IDs not otherwise set. This is intended only for
36// development.
37// - GOOGLE_DEFAULT_CLIENT_SECRET: If set, this is used as the default
38// for all client secrets. This is intended only for development.
39// - GOOGLE_CLIENT_ID_[client name]
40// (e.g. GOOGLE_CLIENT_ID_CLOUD_PRINT, i.e. one for each item in the
41// OAuth2Client enumeration below)
42// - GOOGLE_CLIENT_SECRET_[client name]
43// (e.g. GOOGLE_CLIENT_SECRET_CLOUD_PRINT, i.e. one for each item in
44// the OAuth2Client enumeration below)
45//
46// The GOOGLE_CLIENT_ID_MAIN and GOOGLE_CLIENT_SECRET_MAIN values can
47// also be set via the command line (this overrides any other
48// setting). The command-line parameters are --oauth2-client-id and
49// --oauth2-client-secret.
50//
51// If some of the parameters mentioned above are not provided,
52// Chromium will still build and run, but services that require them
53// may fail to work without warning. They should do so gracefully,
54// similar to what would happen when a network connection is
55// unavailable.
56
57namespace google_apis {
58
dzhioevbd0661412015-10-20 23:00:0759extern const char kAPIKeysDevelopersHowToURL[];
60
[email protected]e7dd7892013-05-16 19:10:4061// Returns true if no dummy API keys or OAuth2 tokens are set.
62bool HasKeysConfigured();
63
64// Retrieves the API key, a.k.a. developer key, or a dummy string
[email protected]e5e894ff2012-09-06 02:18:4765// if not set.
66//
67// Note that the key should be escaped for the context you use it in,
68// e.g. URL-escaped if you use it in a URL.
69std::string GetAPIKey();
70
jkrcalf7baf812016-03-22 10:23:4271// Non-stable channels may have a different Google API key.
72std::string GetNonStableAPIKey();
73
sergeyucb475fa2016-02-23 19:47:0674std::string GetRemotingAPIKey();
75
[email protected]e5e894ff2012-09-06 02:18:4776// Represents the different sets of client IDs and secrets in use.
77enum OAuth2Client {
78 CLIENT_MAIN, // Several different features use this.
79 CLIENT_CLOUD_PRINT,
80 CLIENT_REMOTING,
[email protected]d66d81742013-08-16 05:18:3881 CLIENT_REMOTING_HOST,
[email protected]e5e894ff2012-09-06 02:18:4782
83 CLIENT_NUM_ITEMS // Must be last item.
84};
85
86// Retrieves the OAuth2 client ID for the specified client, or the
87// empty string if not set.
88//
89// Note that the ID should be escaped for the context you use it in,
90// e.g. URL-escaped if you use it in a URL.
91std::string GetOAuth2ClientID(OAuth2Client client);
92
93// Retrieves the OAuth2 client secret for the specified client, or the
94// empty string if not set.
95//
96// Note that the secret should be escaped for the context you use it
97// in, e.g. URL-escaped if you use it in a URL.
98std::string GetOAuth2ClientSecret(OAuth2Client client);
99
kundaji033fb6ec2014-10-15 19:11:08100// Returns the auth token for the data reduction proxy.
101std::string GetSpdyProxyAuthValue();
102
[email protected]e4b54e32014-01-17 13:55:20103// Returns if the API key using in the current build is the one for official
104// Google Chrome.
105bool IsGoogleChromeAPIKeyUsed();
106
[email protected]e5e894ff2012-09-06 02:18:47107} // namespace google_apis
108
[email protected]6386cf52012-09-07 04:26:37109#endif // GOOGLE_APIS_GOOGLE_API_KEYS_H_