Kaynağa Gözat

Remove forceRefresh

Sebastian Schmidt 4 yıl önce
ebeveyn
işleme
4cf6d7daee

+ 0 - 6
Firestore/core/src/credentials/credentials_provider.h

@@ -53,12 +53,6 @@ class CredentialsProvider {
   /** Requests token for the current user. */
   virtual void GetToken(TokenListener<TokenType> completion) = 0;
 
-  /**
-   * Marks the last retrieved token as invalid, making the next `GetToken`
-   * request force refresh the token.
-   */
-  virtual void InvalidateToken() = 0;
-
   /**
    * Sets the listener to be notified of credential changes (sign-in /
    * sign-out, token changes). It is immediately called once with the initial

+ 0 - 3
Firestore/core/src/credentials/empty_credentials_provider.h

@@ -36,9 +36,6 @@ class EmptyCredentialsProvider
     }
   }
 
-  void InvalidateToken() override {
-  }
-
   void SetCredentialChangeListener(
       CredentialChangeListener<ValueType> change_listener) override {
     if (change_listener) {

+ 0 - 2
Firestore/core/src/credentials/firebase_app_check_credentials_provider_apple.h

@@ -45,8 +45,6 @@ class FirebaseAppCheckCredentialsProvider
 
   void SetCredentialChangeListener(
       CredentialChangeListener<std::string> change_listener) override;
-
-  void InvalidateToken() override;
 };
 
 }  // namespace credentials

+ 0 - 3
Firestore/core/src/credentials/firebase_app_check_credentials_provider_apple.mm

@@ -29,9 +29,6 @@ FirebaseAppCheckCredentialsProvider::~FirebaseAppCheckCredentialsProvider() {
 void FirebaseAppCheckCredentialsProvider::GetToken(TokenListener<std::string>) {
 }
 
-void FirebaseAppCheckCredentialsProvider::InvalidateToken() {
-}
-
 void FirebaseAppCheckCredentialsProvider::SetCredentialChangeListener(
     CredentialChangeListener<std::string>) {
 }

+ 0 - 4
Firestore/core/src/credentials/firebase_auth_credentials_provider_apple.h

@@ -74,8 +74,6 @@ class FirebaseAuthCredentialsProvider
   void SetCredentialChangeListener(
       CredentialChangeListener<User> change_listener) override;
 
-  void InvalidateToken() override;
-
  private:
   /**
    * Most contents of the FirebaseCredentialProvider are kept in this
@@ -104,8 +102,6 @@ class FirebaseAuthCredentialsProvider
     int token_counter = 0;
 
     std::mutex mutex;
-
-    bool force_refresh = false;
   };
 
   /**

+ 1 - 7
Firestore/core/src/credentials/firebase_auth_credentials_provider_apple.mm

@@ -119,18 +119,12 @@ void FirebaseAuthCredentialsProvider::GetToken(
 
   // TODO(wilhuff): Need a better abstraction over a missing auth provider.
   if (contents_->auth) {
-    [contents_->auth getTokenForcingRefresh:contents_->force_refresh
-                               withCallback:get_token_callback];
+    [contents_->auth getTokenWithCallback:get_token_callback];
   } else {
     // If there's no Auth provider, call back immediately with a nil
     // (unauthenticated) token.
     get_token_callback(nil, nil);
   }
-  contents_->force_refresh = false;
-}
-
-void FirebaseAuthCredentialsProvider::InvalidateToken() {
-  contents_->force_refresh = true;
 }
 
 void FirebaseAuthCredentialsProvider::SetCredentialChangeListener(

+ 0 - 12
Firestore/core/src/remote/datastore.cc

@@ -189,11 +189,8 @@ void Datastore::CommitMutationsWithCredentials(
       // TODO(c++14): move into lambda.
       [this, call, callback](const StatusOr<grpc::ByteBuffer>& result) {
         LogGrpcCallFinished("CommitRequest", call, result.status());
-        HandleCallStatus(result.status());
-
         // Response is deliberately ignored
         callback(result.status());
-
         RemoveGrpcCall(call);
       });
 }
@@ -230,10 +227,7 @@ void Datastore::LookupDocumentsWithCredentials(
   call->Start([this, call, callback](
                   const StatusOr<std::vector<grpc::ByteBuffer>>& result) {
     LogGrpcCallFinished("BatchGetDocuments", call, result.status());
-    HandleCallStatus(result.status());
-
     OnLookupDocumentsResponse(result, callback);
-
     RemoveGrpcCall(call);
   });
 }
@@ -278,12 +272,6 @@ void Datastore::ResumeRpcWithCredentials(const OnCredentials& on_credentials) {
       });
 }
 
-void Datastore::HandleCallStatus(const Status& status) {
-  if (status.code() == Error::kErrorUnauthenticated) {
-    credentials_->InvalidateToken();
-  }
-}
-
 void Datastore::RemoveGrpcCall(GrpcCall* to_remove) {
   auto found = std::find_if(active_calls_.begin(), active_calls_.end(),
                             [to_remove](const std::unique_ptr<GrpcCall>& call) {

+ 0 - 2
Firestore/core/src/remote/datastore.h

@@ -171,8 +171,6 @@ class Datastore : public std::enable_shared_from_this<Datastore> {
       std::function<void(const util::StatusOr<credentials::AuthToken>&)>;
   void ResumeRpcWithCredentials(const OnCredentials& on_credentials);
 
-  void HandleCallStatus(const util::Status& status);
-
   void RemoveGrpcCall(GrpcCall* to_remove);
 
   // In case Auth tries to invoke a callback after `Datastore` has been shut

+ 0 - 4
Firestore/core/src/remote/stream.cc

@@ -288,10 +288,6 @@ void Stream::HandleErrorStatus(const Status& status) {
         "%s Using maximum backoff delay to prevent overloading the backend.",
         GetDebugDescription());
     backoff_.ResetToMax();
-  } else if (status.code() == Error::kErrorUnauthenticated) {
-    // "unauthenticated" error means the token was rejected. Try force
-    // refreshing it in case it just expired.
-    credentials_provider_->InvalidateToken();
   }
 }
 

+ 0 - 7
Firestore/core/test/unit/credentials/empty_credentials_provider_test.cc

@@ -46,13 +46,6 @@ TEST(EmptyAuthCredentialsProvider, SetListener) {
   credentials_provider.SetCredentialChangeListener(nullptr);
 }
 
-TEST(EmptyCredentialsProvider, InvalidateToken) {
-  EmptyAuthCredentialsProvider credentials_provider;
-  credentials_provider.InvalidateToken();
-  credentials_provider.GetToken(
-      [](util::StatusOr<AuthToken> result) { EXPECT_TRUE(result.ok()); });
-}
-
 }  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase

+ 1 - 20
Firestore/core/test/unit/credentials/firebase_credentials_provider_test.mm

@@ -33,7 +33,6 @@
 @interface FSTAuthFake : NSObject <FIRAuthInterop>
 @property(nonatomic, nullable, strong, readonly) NSString* token;
 @property(nonatomic, nullable, strong, readonly) NSString* uid;
-@property(nonatomic, readonly) BOOL forceRefreshTriggered;
 - (instancetype)initWithToken:(nullable NSString*)token
                           uid:(nullable NSString*)uid NS_DESIGNATED_INITIALIZER;
 - (instancetype)init NS_UNAVAILABLE;
@@ -47,7 +46,6 @@
   if (self) {
     _token = [token copy];
     _uid = [uid copy];
-    _forceRefreshTriggered = NO;
   }
   return self;
 }
@@ -58,9 +56,7 @@
   return self.uid;
 }
 
-- (void)getTokenForcingRefresh:(BOOL)forceRefresh
-                  withCallback:(nonnull FIRTokenCallback)callback {
-  _forceRefreshTriggered = forceRefresh;
+- (void)getTokenWithCallback:(nonnull FIRTokenCallback)callback {
   callback(self.token, nil);
 }
 
@@ -139,21 +135,6 @@ TEST(FirebaseCredentialsProviderTest, SetListener) {
   credentials_provider.SetCredentialChangeListener(nullptr);
 }
 
-TEST(FirebaseCredentialsProviderTest, InvalidateToken) {
-  FIRApp* app = testutil::AppForUnitTesting();
-  FSTAuthFake* auth = [[FSTAuthFake alloc] initWithToken:@"token for fake uid"
-                                                     uid:@"fake uid"];
-  FirebaseAuthCredentialsProvider credentials_provider(app, auth);
-  credentials_provider.InvalidateToken();
-  credentials_provider.GetToken([&auth](util::StatusOr<AuthToken> result) {
-    EXPECT_TRUE(result.ok());
-    EXPECT_TRUE(auth.forceRefreshTriggered);
-    const AuthToken& token = result.ValueOrDie();
-    EXPECT_EQ("token for fake uid", token.token());
-    EXPECT_EQ("fake uid", token.user().uid());
-  });
-}
-
 }  // namespace credentials
 }  // namespace firestore
 }  // namespace firebase

+ 0 - 5
Firestore/core/test/unit/remote/fake_auth_credentials_provider.cc

@@ -48,11 +48,6 @@ void FakeAuthCredentialsProvider::GetToken(
   }
 }
 
-void FakeAuthCredentialsProvider::InvalidateToken() {
-  observed_states_.push_back("InvalidateToken");
-  EmptyAuthCredentialsProvider::InvalidateToken();
-}
-
 void FakeAuthCredentialsProvider::DelayGetToken() {
   delay_get_token_ = true;
 }

+ 0 - 1
Firestore/core/test/unit/remote/fake_auth_credentials_provider.h

@@ -33,7 +33,6 @@ class FakeAuthCredentialsProvider
  public:
   void GetToken(
       credentials::TokenListener<credentials::AuthToken> completion) override;
-  void InvalidateToken() override;
 
   // `GetToken` will not invoke the completion immediately -- invoke it manually
   // using `InvokeGetToken`.

+ 2 - 2
Firestore/core/test/unit/remote/stream_test.cc

@@ -508,7 +508,7 @@ TEST_F(StreamTest, RefreshesTokenUponExpiration) {
                {Type::Finish, grpc::Status{grpc::UNAUTHENTICATED, ""}}});
   // Error "Unauthenticated" should invalidate the token.
   EXPECT_EQ(credentials->observed_states(),
-            States({"GetToken", "InvalidateToken"}));
+            States({"GetToken"}));
 
   worker_queue->EnqueueBlocking([&] { firestore_stream->InhibitBackoff(); });
   StartStream();
@@ -516,7 +516,7 @@ TEST_F(StreamTest, RefreshesTokenUponExpiration) {
                {Type::Finish, grpc::Status{grpc::UNAVAILABLE, ""}}});
   // Simulate a different error -- token should not be invalidated this time.
   EXPECT_EQ(credentials->observed_states(),
-            States({"GetToken", "InvalidateToken", "GetToken"}));
+            States({"GetToken", "GetToken"}));
 }
 
 }  // namespace remote

+ 1 - 1
Interop/Auth/Public/FIRAuthInterop.h

@@ -32,7 +32,7 @@ NS_SWIFT_NAME(AuthInterop)
 @protocol FIRAuthInterop
 
 /// Retrieves the Firebase authentication token, possibly refreshing it if it has expired.
-- (void)getTokenForcingRefresh:(BOOL)forceRefresh withCallback:(FIRTokenCallback)callback;
+- (void)getTokenWithCallback:(FIRTokenCallback)callback;
 
 /// Get the current Auth user's UID. Returns nil if there is no user signed in.
 - (nullable NSString *)getUserID;