blob: 4ec0b87fdc552d962742d2d471a0af35a6b0f51f [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef GOOGLE_APIS_GAIA_GAIA_ACCESS_TOKEN_FETCHER_H_
#define GOOGLE_APIS_GAIA_GAIA_ACCESS_TOKEN_FETCHER_H_
#include <memory>
#include <string>
#include "base/memory/ref_counted.h"
#include "google_apis/gaia/oauth2_access_token_fetcher_impl.h"
class OAuth2AccessTokenConsumer;
namespace network {
class SharedURLLoaderFactory;
}
// An implementation of OAuth2AccessTokenFetcherImpl for retrieving OAuth2
// tokens from Google's authorization server. See "Refreshing an access token"
// for more Google specific info:
// https://developers.google.com/identity/protocols/oauth2/web-server?csw=1#obtainingaccesstokens
class GaiaAccessTokenFetcher : public OAuth2AccessTokenFetcherImpl {
public:
static std::unique_ptr<GaiaAccessTokenFetcher>
CreateExchangeRefreshTokenForAccessTokenInstance(
OAuth2AccessTokenConsumer* consumer,
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
const std::string& refresh_token);
static std::unique_ptr<GaiaAccessTokenFetcher>
CreateExchangeAuthCodeForRefeshTokenInstance(
OAuth2AccessTokenConsumer* consumer,
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
const std::string& auth_code);
~GaiaAccessTokenFetcher() override;
private:
GaiaAccessTokenFetcher(
OAuth2AccessTokenConsumer* consumer,
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
const std::string& refresh_token,
const std::string& auth_code);
// OAuth2AccessTokenFetcherImpl:
void RecordResponseCodeUma(int error_value) const override;
void RecordBadRequestTypeUma(
OAuth2ErrorCodesForHistogram access_error) const override;
GURL GetAccessTokenURL() const override;
net::NetworkTrafficAnnotationTag GetTrafficAnnotationTag() const override;
};
#endif // GOOGLE_APIS_GAIA_GAIA_ACCESS_TOKEN_FETCHER_H_