You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

569 lines
24 KiB

/*
* Copyright 2017 Google
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#import <Foundation/Foundation.h>
@class FIRAuthRequestConfiguration;
@class FIRCreateAuthURIRequest;
@class FIRCreateAuthURIResponse;
@class FIREmailLinkSignInRequest;
@class FIREmailLinkSignInResponse;
@class FIRGetAccountInfoRequest;
@class FIRGetAccountInfoResponse;
@class FIRGetProjectConfigRequest;
@class FIRGetProjectConfigResponse;
@class FIRGetOOBConfirmationCodeRequest;
@class FIRGetOOBConfirmationCodeResponse;
@class FIRResetPasswordRequest;
@class FIRResetPasswordResponse;
@class FIRSecureTokenRequest;
@class FIRSecureTokenResponse;
@class FIRSetAccountInfoRequest;
@class FIRSetAccountInfoResponse;
@class FIRVerifyAssertionRequest;
@class FIRVerifyAssertionResponse;
@class FIRVerifyClientRequest;
@class FIRVerifyClientResponse;
@class FIRVerifyCustomTokenRequest;
@class FIRVerifyCustomTokenResponse;
@class FIRVerifyPasswordRequest;
@class FIRVerifyPasswordResponse;
@class FIRVerifyPhoneNumberRequest;
@class FIRVerifyPhoneNumberResponse;
@class FIRSendVerificationCodeRequest;
@class FIRSendVerificationCodeResponse;
@class FIRSignUpNewUserRequest;
@class FIRSignUpNewUserResponse;
@class FIRDeleteAccountRequest;
@class FIRDeleteAccountResponse;
@protocol FIRAuthBackendImplementation;
@protocol FIRAuthBackendRPCIssuer;
NS_ASSUME_NONNULL_BEGIN
/** @typedef FIRAuthBackendRPCIssuerCompletionHandler
@brief The type of block used to return the result of a call to an endpoint.
@param data The HTTP response body.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIRAuthBackendRPCIssuerCompletionHandler)(NSData *_Nullable data,
NSError *_Nullable error);
/** @typedef FIRCreateAuthURIResponseCallback
@brief The type of block used to return the result of a call to the createAuthURI
endpoint.
@param response The received response, if any.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIRCreateAuthURIResponseCallback)
(FIRCreateAuthURIResponse *_Nullable response, NSError *_Nullable error);
/** @typedef FIRGetAccountInfoResponseCallback
@brief The type of block used to return the result of a call to the getAccountInfo
endpoint.
@param response The received response, if any.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIRGetAccountInfoResponseCallback)
(FIRGetAccountInfoResponse *_Nullable response, NSError *_Nullable error);
/** @typedef FIRGetProjectConfigResponseCallback
@brief The type of block used to return the result of a call to the getProjectInfo
endpoint.
@param response The received response, if any.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIRGetProjectConfigResponseCallback)
(FIRGetProjectConfigResponse *_Nullable response, NSError *_Nullable error);
/** @typedef FIRSetAccountInfoResponseCallback
@brief The type of block used to return the result of a call to the setAccountInfo
endpoint.
@param response The received response, if any.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIRSetAccountInfoResponseCallback)
(FIRSetAccountInfoResponse *_Nullable response, NSError *_Nullable error);
/** @typedef FIRSecureTokenResponseCallback
@brief The type of block used to return the result of a call to the token endpoint.
@param response The received response, if any.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIRSecureTokenResponseCallback)
(FIRSecureTokenResponse *_Nullable response, NSError *_Nullable error);
/** @typedef FIRVerifyAssertionResponseCallback
@brief The type of block used to return the result of a call to the verifyAssertion
endpoint.
@param response The received response, if any.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIRVerifyAssertionResponseCallback)
(FIRVerifyAssertionResponse *_Nullable response, NSError *_Nullable error);
/** @typedef FIRVerifyPasswordResponseCallback
@brief The type of block used to return the result of a call to the verifyPassword
endpoint.
@param response The received response, if any.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIRVerifyPasswordResponseCallback)
(FIRVerifyPasswordResponse *_Nullable response, NSError *_Nullable error);
/** @typedef FIREmailLinkSigninResponseCallback
@brief The type of block used to return the result of a call to the emailLinkSignin
endpoint.
@param response The received response, if any.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIREmailLinkSigninResponseCallback)
(FIREmailLinkSignInResponse *_Nullable response, NSError *_Nullable error);
/** @typedef FIRVerifyCustomTokenResponseCallback
@brief The type of block used to return the result of a call to the verifyCustomToken
endpoint.
@param response The received response, if any.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIRVerifyCustomTokenResponseCallback)
(FIRVerifyCustomTokenResponse *_Nullable response, NSError *_Nullable error);
/** @typedef FIRDeleteCallBack
@brief The type of block called when a request delete account has finished.
@param error The error which occurred, or nil if the request was successful.
*/
typedef void (^FIRDeleteCallBack)(NSError *_Nullable error);
/** @typedef FIRGetOOBConfirmationCodeResponseCallback
@brief The type of block used to return the result of a call to the getOOBConfirmationCode
endpoint.
@param response The received response, if any.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIRGetOOBConfirmationCodeResponseCallback)
(FIRGetOOBConfirmationCodeResponse *_Nullable response, NSError *_Nullable error);
/** @typedef FIRSignupNewUserCallback
@brief The type of block used to return the result of a call to the signupNewUser endpoint.
@param response The received response, if any.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIRSignupNewUserCallback)
(FIRSignUpNewUserResponse *_Nullable response, NSError *_Nullable error);
/** @typedef FIRResetPasswordCallback
@brief The type of block used to return the result of a call to the resetPassword endpoint.
@param response The received response, if any.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIRResetPasswordCallback)
(FIRResetPasswordResponse *_Nullable response, NSError *_Nullable error);
/** @typedef FIRSendVerificationCodeResponseCallback
@brief The type of block used to return the result of a call to the sendVerificationCode
endpoint.
@param response The received response, if any.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIRSendVerificationCodeResponseCallback)
(FIRSendVerificationCodeResponse *_Nullable response, NSError *_Nullable error);
/** @typedef FIRVerifyPhoneNumberResponseCallback
@brief The type of block used to return the result of a call to the verifyPhoneNumber endpoint.
@param response The received response, if any.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIRVerifyPhoneNumberResponseCallback)
(FIRVerifyPhoneNumberResponse *_Nullable response, NSError *_Nullable error);
/** @typedef FIRVerifyClientResponseCallback
@brief The type of block used to return the result of a call to the verifyClient endpoint.
@param response The received response, if any.
@param error The error which occurred, if any.
@remarks One of response or error will be non-nil.
*/
typedef void (^FIRVerifyClientResponseCallback)
(FIRVerifyClientResponse *_Nullable response, NSError *_Nullable error);
/** @class FIRAuthBackend
@brief Simple static class with methods representing the backend RPCs.
@remarks All callback blocks passed as method parameters are invoked asynchronously on the
global work queue in the future. See
https://github.com/firebase/firebase-ios-sdk/tree/master/Firebase/Auth/Docs/threading.ml
*/
@interface FIRAuthBackend : NSObject
/** @fn authUserAgent
@brief Retrieves the Firebase Auth user agent.
@return The Firebase Auth user agent.
*/
+ (NSString *)authUserAgent;
/** @fn setBackendImplementation:
@brief Changes the default backend implementation to something else.
@param backendImplementation The backend implementation to use.
@remarks This is not, generally, safe to call in a scenario where other backend requests may
be occuring. This is specifically to help mock the backend for testing purposes.
*/
+ (void)setBackendImplementation:(id<FIRAuthBackendImplementation>)backendImplementation;
/** @fn setDefaultBackendImplementationWithRPCIssuer:
@brief Uses the default backend implementation, but with a custom RPC issuer.
@param RPCIssuer The RPC issuer to use. If @c nil, will use the default implementation.
@remarks This is not, generally, safe to call in a scenario where other backend requests may
be occuring. This is specifically to help test the backend interfaces (requests, responses,
and shared FIRAuthBackend logic.)
*/
+ (void)setDefaultBackendImplementationWithRPCIssuer:
(nullable id<FIRAuthBackendRPCIssuer>)RPCIssuer;
/** @fn createAuthURI:callback:
@brief Calls the createAuthURI endpoint, which is responsible for creating the URI used by the
IdP to authenticate the user.
@param request The request parameters.
@param callback The callback.
*/
+ (void)createAuthURI:(FIRCreateAuthURIRequest *)request
callback:(FIRCreateAuthURIResponseCallback)callback;
/** @fn getAccountInfo:callback:
@brief Calls the getAccountInfo endpoint, which returns account info for a given account.
@param request The request parameters.
@param callback The callback.
*/
+ (void)getAccountInfo:(FIRGetAccountInfoRequest *)request
callback:(FIRGetAccountInfoResponseCallback)callback;
/** @fn getProjectConfig:callback:
@brief Calls the getProjectConfig endpoint, which returns configuration information for a given
project.
@param request An object wrapping the backend get request.
@param callback The callback.
*/
+ (void)getProjectConfig:(FIRGetProjectConfigRequest *)request
callback:(FIRGetProjectConfigResponseCallback)callback;
/** @fn setAccountInfo:callback:
@brief Calls the setAccountInfo endpoint, which is responsible for setting account info for a
user, for example, to sign up a new user with email and password.
@param request The request parameters.
@param callback The callback.
*/
+ (void)setAccountInfo:(FIRSetAccountInfoRequest *)request
callback:(FIRSetAccountInfoResponseCallback)callback;
/** @fn verifyAssertion:callback:
@brief Calls the verifyAssertion endpoint, which is responsible for authenticating a
user who has IDP-related credentials (an ID Token, an Access Token, etc.)
@param request The request parameters.
@param callback The callback.
*/
+ (void)verifyAssertion:(FIRVerifyAssertionRequest *)request
callback:(FIRVerifyAssertionResponseCallback)callback;
/** @fn verifyCustomToken:callback:
@brief Calls the verifyCustomToken endpoint, which is responsible for authenticating a
user who has BYOAuth credentials (a self-signed token using their BYOAuth private key.)
@param request The request parameters.
@param callback The callback.
*/
+ (void)verifyCustomToken:(FIRVerifyCustomTokenRequest *)request
callback:(FIRVerifyCustomTokenResponseCallback)callback;
/** @fn verifyPassword:callback:
@brief Calls the verifyPassword endpoint, which is responsible for authenticating a
user who has email and password credentials.
@param request The request parameters.
@param callback The callback.
*/
+ (void)verifyPassword:(FIRVerifyPasswordRequest *)request
callback:(FIRVerifyPasswordResponseCallback)callback;
/** @fn emailLinkSignin:callback:
@brief Calls the emailLinkSignin endpoint, which is responsible for authenticating a
user through passwordless sign-in.
@param request The request parameters.
@param callback The callback.
*/
+ (void)emailLinkSignin:(FIREmailLinkSignInRequest *)request
callback:(FIREmailLinkSigninResponseCallback)callback;
/** @fn secureToken:callback:
@brief Calls the token endpoint, which is responsible for performing STS token exchanges and
token refreshes.
@param request The request parameters.
@param callback The callback.
*/
+ (void)secureToken:(FIRSecureTokenRequest *)request
callback:(FIRSecureTokenResponseCallback)callback;
/** @fn getOOBConfirmationCode:callback:
@brief Calls the getOOBConfirmationCode endpoint, which is responsible for sending email change
request emails, and password reset emails.
@param request The request parameters.
@param callback The callback.
*/
+ (void)getOOBConfirmationCode:(FIRGetOOBConfirmationCodeRequest *)request
callback:(FIRGetOOBConfirmationCodeResponseCallback)callback;
/** @fn signUpNewUser:
@brief Calls the signUpNewUser endpoint, which is responsible anonymously signing up a user
or signing in a user anonymously.
@param request The request parameters.
@param callback The callback.
*/
+ (void)signUpNewUser:(FIRSignUpNewUserRequest *)request
callback:(FIRSignupNewUserCallback)callback;
/** @fn resetPassword:callback
@brief Calls the resetPassword endpoint, which is responsible for resetting a user's password
given an OOB code and new password.
@param request The request parameters.
@param callback The callback.
*/
+ (void)resetPassword:(FIRResetPasswordRequest *)request
callback:(FIRResetPasswordCallback)callback;
/** @fn deleteAccount:
@brief Calls the DeleteAccount endpoint, which is responsible for deleting a user.
@param request The request parameters.
@param callback The callback.
*/
+ (void)deleteAccount:(FIRDeleteAccountRequest *)request
callback:(FIRDeleteCallBack)callback;
#if TARGET_OS_IOS
/** @fn sendVerificationCode:callback:
@brief Calls the sendVerificationCode endpoint, which is responsible for sending the
verification code to a phone number specified in the request parameters.
@param request The request parameters.
@param callback The callback.
*/
+ (void)sendVerificationCode:(FIRSendVerificationCodeRequest *)request
callback:(FIRSendVerificationCodeResponseCallback)callback;
/** @fn verifyPhoneNumber:callback:
@brief Calls the verifyPhoneNumber endpoint, which is responsible for sending the verification
code to a phone number specified in the request parameters.
@param request The request parameters.
@param callback The callback.
*/
+ (void)verifyPhoneNumber:(FIRVerifyPhoneNumberRequest *)request
callback:(FIRVerifyPhoneNumberResponseCallback)callback;
/** @fn verifyClient:callback:
@brief Calls the verifyClient endpoint, which is responsible for sending the silent push
notification used for app validation to the device provided in the request parameters.
@param request The request parameters.
@param callback The callback.
*/
+ (void)verifyClient:(FIRVerifyClientRequest *)request
callback:(FIRVerifyClientResponseCallback)callback;
#endif
@end
/** @protocol FIRAuthBackendRPCIssuer
@brief Used to make FIRAuthBackend
*/
@protocol FIRAuthBackendRPCIssuer <NSObject>
/** @fn asyncPostToURLWithRequestConfiguration:URL:body:contentType:completionHandler:
@brief Asynchronously seXnds a POST request.
@param requestConfiguration The request to be made.
@param URL The request URL.
@param body Request body.
@param contentType Content type of the body.
@param handler provided that handles POST response. Invoked asynchronously on the auth global
work queue in the future.
*/
- (void)asyncPostToURLWithRequestConfiguration:(FIRAuthRequestConfiguration *)requestConfiguration
URL:(NSURL *)URL
body:(NSData *)body
contentType:(NSString *)contentType
completionHandler:(FIRAuthBackendRPCIssuerCompletionHandler)handler;
@end
/** @protocol FIRAuthBackendImplementation
@brief Used to make FIRAuthBackend provide a layer of indirection to an actual RPC-based backend
or a mock backend.
*/
@protocol FIRAuthBackendImplementation <NSObject>
/** @fn createAuthURI:callback:
@brief Calls the createAuthURI endpoint, which is responsible for creating the URI used by the
IdP to authenticate the user.
@param request The request parameters.
@param callback The callback.
*/
- (void)createAuthURI:(FIRCreateAuthURIRequest *)request
callback:(FIRCreateAuthURIResponseCallback)callback;
/** @fn getAccountInfo:callback:
@brief Calls the getAccountInfo endpoint, which returns account info for a given account.
@param request The request parameters.
@param callback The callback.
*/
- (void)getAccountInfo:(FIRGetAccountInfoRequest *)request
callback:(FIRGetAccountInfoResponseCallback)callback;
/** @fn getProjectConfig:callback:
@brief Calls the getProjectInfo endpoint, which returns configuration information for a given
project.
@param request The request parameters.
@param callback The callback.
*/
- (void)getProjectConfig:(FIRGetProjectConfigRequest *)request
callback:(FIRGetProjectConfigResponseCallback)callback;
/** @fn setAccountInfo:callback:
@brief Calls the setAccountInfo endpoint, which is responsible for setting account info for a
user, for example, to sign up a new user with email and password.
@param request The request parameters.
@param callback The callback.
*/
- (void)setAccountInfo:(FIRSetAccountInfoRequest *)request
callback:(FIRSetAccountInfoResponseCallback)callback;
/** @fn verifyAssertion:callback:
@brief Calls the verifyAssertion endpoint, which is responsible for authenticating a
user who has IDP-related credentials (an ID Token, an Access Token, etc.)
@param request The request parameters.
@param callback The callback.
*/
- (void)verifyAssertion:(FIRVerifyAssertionRequest *)request
callback:(FIRVerifyAssertionResponseCallback)callback;
/** @fn verifyCustomToken:callback:
@brief Calls the verifyCustomToken endpoint, which is responsible for authenticating a
user who has BYOAuth credentials (a self-signed token using their BYOAuth private key.)
@param request The request parameters.
@param callback The callback.
*/
- (void)verifyCustomToken:(FIRVerifyCustomTokenRequest *)request
callback:(FIRVerifyCustomTokenResponseCallback)callback;
/** @fn verifyPassword:callback:
@brief Calls the verifyPassword endpoint, which is responsible for authenticating a
user who has email and password credentials.
@param request The request parameters.
@param callback The callback.
*/
- (void)verifyPassword:(FIRVerifyPasswordRequest *)request
callback:(FIRVerifyPasswordResponseCallback)callback;
/** @fn emailLinkSignin:callback:
@brief Calls the emailLinkSignin endpoint, which is responsible for authenticating a
user through passwordless sign-in.
@param request The request parameters.
@param callback The callback.
*/
- (void)emailLinkSignin:(FIREmailLinkSignInRequest *)request
callback:(FIREmailLinkSigninResponseCallback)callback;
/** @fn secureToken:callback:
@brief Calls the token endpoint, which is responsible for performing STS token exchanges and
token refreshes.
@param request The request parameters.
@param callback The callback.
*/
- (void)secureToken:(FIRSecureTokenRequest *)request
callback:(FIRSecureTokenResponseCallback)callback;
/** @fn getOOBConfirmationCode:callback:
@brief Calls the getOOBConfirmationCode endpoint, which is responsible for sending email change
request emails, email sign-in link emails, and password reset emails.
@param request The request parameters.
@param callback The callback.
*/
- (void)getOOBConfirmationCode:(FIRGetOOBConfirmationCodeRequest *)request
callback:(FIRGetOOBConfirmationCodeResponseCallback)callback;
/** @fn signUpNewUser:
@brief Calls the signUpNewUser endpoint, which is responsible anonymously signing up a user
or signing in a user anonymously.
@param request The request parameters.
@param callback The callback.
*/
- (void)signUpNewUser:(FIRSignUpNewUserRequest *)request
callback:(FIRSignupNewUserCallback)callback;
/** @fn deleteAccount:
@brief Calls the DeleteAccount endpoint, which is responsible for deleting a user.
@param request The request parameters.
@param callback The callback.
*/
- (void)deleteAccount:(FIRDeleteAccountRequest *)request
callback:(FIRDeleteCallBack)callback;
#if TARGET_OS_IOS
/** @fn sendVerificationCode:callback:
@brief Calls the sendVerificationCode endpoint, which is responsible for sending the
verification code to a phone number specified in the request parameters.
@param request The request parameters.
@param callback The callback.
*/
- (void)sendVerificationCode:(FIRSendVerificationCodeRequest *)request
callback:(FIRSendVerificationCodeResponseCallback)callback;
/** @fn verifyPhoneNumber:callback:
@brief Calls the verifyPhoneNumber endpoint, which is responsible for sending the verification
code to a phone number specified in the request parameters.
@param request The request parameters.
@param callback The callback.
*/
- (void)verifyPhoneNumber:(FIRVerifyPhoneNumberRequest *)request
callback:(FIRVerifyPhoneNumberResponseCallback)callback;
/** @fn verifyClient:callback:
@brief Calls the verifyClient endpoint, which is responsible for sending the silent push
notification used for app validation to the device provided in the request parameters.
@param request The request parameters.
@param callback The callback.
*/
- (void)verifyClient:(FIRVerifyClientRequest *)request
callback:(FIRVerifyClientResponseCallback)callback;
#endif
/** @fn resetPassword:callback
@brief Calls the resetPassword endpoint, which is responsible for resetting a user's password
given an OOB code and new password.
@param request The request parameters.
@param callback The callback.
*/
- (void)resetPassword:(FIRResetPasswordRequest *)request
callback:(FIRResetPasswordCallback)callback;
@end
NS_ASSUME_NONNULL_END