1 // 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 5 #ifndef GOOGLE_APIS_DRIVE_AUTH_SERVICE_INTERFACE_H_ 6 #define GOOGLE_APIS_DRIVE_AUTH_SERVICE_INTERFACE_H_ 7 8 #include <string> 9 10 #include "base/callback_forward.h" 11 #include "google_apis/drive/gdata_errorcode.h" 12 13 namespace google_apis { 14 15 class AuthServiceObserver; 16 17 // Called when fetching of access token is complete. 18 typedef base::Callback<void(GDataErrorCode error, 19 const std::string& access_token)> 20 AuthStatusCallback; 21 22 // This defines an interface for the authentication service which is required 23 // by authenticated requests (AuthenticatedRequestInterface). 24 // All functions must be called on UI thread. 25 class AuthServiceInterface { 26 public: 27 virtual ~AuthServiceInterface() {} 28 29 // Adds and removes the observer. 30 virtual void AddObserver(AuthServiceObserver* observer) = 0; 31 virtual void RemoveObserver(AuthServiceObserver* observer) = 0; 32 33 // Starts fetching OAuth2 access token from the refresh token. 34 // |callback| must not be null. 35 virtual void StartAuthentication(const AuthStatusCallback& callback) = 0; 36 37 // True if an OAuth2 access token is retrieved and believed to be fresh. 38 // The access token is used to access the Drive server. 39 virtual bool HasAccessToken() const = 0; 40 41 // True if an OAuth2 refresh token is present. Its absence means that user 42 // is not properly authenticated. 43 // The refresh token is used to get the access token. 44 virtual bool HasRefreshToken() const = 0; 45 46 // Returns OAuth2 access token. 47 virtual const std::string& access_token() const = 0; 48 49 // Clears OAuth2 access token. 50 virtual void ClearAccessToken() = 0; 51 52 // Clears OAuth2 refresh token. 53 virtual void ClearRefreshToken() = 0; 54 }; 55 56 } // namespace google_apis 57 58 #endif // GOOGLE_APIS_DRIVE_AUTH_SERVICE_INTERFACE_H_ 59