providerCreator
providerCreator is a protocol that defines specific social login providers (e.g., Google, Facebook, Apple) available in our iOS SDK.
These specific providers use native calls or external libraries to authenticate users.
All providers except Apple that you configure in the ReachFive Console for which you don’t use a specific provider creator will authenticate through an ASWebAuthenticationSession.
You should define and configure these providers when you configure the iOS SDK.
Examples
static let reachfive: ReachFive = ReachFive(
sdkConfig: sdkRemote,
providersCreators: [
GoogleProvider(),
FacebookProvider(),
AppleProvider(variant: "ios_native"),
WeChat(),
WebProvider(name: .bconnect, variant: "natif", mode: .externalApp)
]
)
Available provider creators
The providers who have a variant parameter have the following algorithm to choose a variant configured on the console.
-
If a variant is provided, the variant with the exact name, irrespective of case, is chosen. If no variant matches, the algorithm chooses the variant as if no variant was provided.
-
If no variant is provided, the first variant containing
iosin its name, irrespective of case, if any, is chosen. Otherwise, the default variant is chosen.
| Name | Description | ||||||
|---|---|---|---|---|---|---|---|
The object for configuring Google native provider for our iOS SDK. Optionally takes a variant parameter.
|
|||||||
The object for configuring Facebook native provider for our iOS SDK. This provider takes two optional parameters:
|
|||||||
Optionally takes a variant parameter.
|
|||||||
The object for configuring WeChat Connect for our iOS SDK.
|
|||||||
The object for configuring a web-only provider — one with no native SDK component, authenticated entirely through an Takes a
See the "Associated Domains" section of Getting Started for the entitlement setup.
|
Universal-link web providers
Some web providers finish login on an https universal link instead of the custom scheme.
Use the checklist for your WebProvider mode; you do not need a custom provider unless none of the built-in options fit.
Login may hand off to an external app (e.g. a banking app) that reopens yours via a universal link.
-
Configure the provider and variant on your ReachFive Console.
-
Whitelist the provider’s
universalLinkURL in Allowed Callback URLs (see Clients). -
Register a
WebProviderwithmode: .externalAppinReachFive(providersCreators:). -
Initialize the SDK so provider configurations are fetched and
getProvidercan resolve your provider (seeapplicationDidFinishLaunchingWithOptions(_:)). -
Add
applinks:${host}to Associated Domains and the matchingapplinkssection inapple-app-site-association(seeapple-app-site-association). -
Forward
application(:continue:restorationHandler:)to ReachFive and honour the returnedBool(seeapplication(:continue:restorationHandler:)). -
Call
getProvider(name:).login(…)with aPresentationbuilt from aUIViewControllerattached to a window; see getProvider for details.
Do not use loadLoginWebview: the callback is delivered through application(_:continue:), not an embedded webview.
If iOS terminates your app while the user is in the external app, the in-flight login is lost and must be restarted (see application(_:continue:restorationHandler:)).
This is the same flow as the default custom-scheme login, but the OAuth redirect_uri is the provider’s https:// universal link and the authentication sheet intercepts it in-band meaning no external-app handoff.
-
Configure the provider and variant on your ReachFive Console.
-
Whitelist the provider’s
universalLinkURL in Allowed Callback URLs (see Clients). -
Register a
WebProviderwithmode: .universalLinkinReachFive(providersCreators:)(iOS 17.4+). -
Initialize the SDK so provider configurations are fetched and
getProvidercan resolve your provider (seeapplicationDidFinishLaunchingWithOptions(_:)). -
Add
webcredentials:${host}to Associated Domains and the matchingwebcredentialssection inapple-app-site-association(seeapple-app-site-association). -
Call
getProvider(name:).login(…)with aPresentationbuilt from aUIViewControllerattached to a window; see getProvider for details.
No application(_:continue:) wiring is required for login completion; the ASWebAuthenticationSession completes inside the sheet.
Do not use loadLoginWebview: use WebProvider or webviewLogin with a secure session instead of an embedded webview.
| None of these fit your case? See Implement a custom provider to implement your own. |