Seamless Login
Seamless Login
Overview
The CoreAdapter SDK allows partner applications to implement seamless login for their users. This document outlines the steps and methods required for setting up and handling seamless login, both with and without the SDK loader UI.
Setup
Import the CoreAdapter
import CoreAdapter
Application Configuration
In your AppDelegate
, configure the CoreAdapter for seamless login:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
CoreAdapterConfig.seamlessLoginSetup(with: self)
}
Seamless Login with SDK Loader UI
Implement the SeamlessProtocol
Extend the AppDelegate
to conform to the SeamlessProtocol
and handle the seamless login flow:
// seamless login using sdk loader UI
extension AppDelegate: SeamlessProtocol {
func onNucleiSeamlessLoginRequest() {
// Here partner application will get the temporary token from their server.
// Once it receives the token, send the token to SDK by calling following method
let token = <"Token">
CoreAdapter.validateSeamlessToken(token, mobileNumber: <"Mobile number">, countryCode: <"country code">)
}
func seamlessLoginDidSucceed() {
print("Seamless login succeeded")
// partner will receive a call back after login is successful
// partner will be having access to our module here after
}
func seamlessLoginDidFail(_ error: NSError) {
// partner will receive a call back after login is not successful
print("Seamless login failed")
print(error)
}
}
Silent Login without SDK Loader UI
ViewController Setup
In your ViewController
, configure the CoreAdapter for seamless login:
// Silent login without sdk loader UI
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
CoreAdapterConfig.seamlessLoginSetup(with: self)
if CoreAdapter.isNucleiSignedIn() == false {
// Call generate token method
// Once it receives the token, send the token to SDK by calling following method
let token = <"Token">
CoreAdapter.validateSeamlessToken(token, mobileNumber: <"Mobile number">, countryCode: <"country code">)
}
}
}
Implement the SeamlessProtocol
Extend the ViewController
to conform to the SeamlessProtocol
:
extension ViewController: SeamlessProtocol {
func onNucleiSeamlessLoginRequest() {
// Call generate token method and validate received token
let token = <"Token">
CoreAdapter.validateSeamlessToken(token, mobileNumber: <"Mobile number">, countryCode: <"country code">)
}
func seamlessLoginDidSucceed() {
print("Seamless login succeeded")
// partner will receive a call back after login is successful
// partner will be having access to our module here after
}
func seamlessLoginDidFail(_ error: NSError) {
// partner will receive a call back after login is not successful
print("Seamless login failed")
print(error)
}
}
Methods
seamlessLoginDidSucceed()
This method is called by the Nuclei SDK once the user is successfully logged in using the seamless flow.
seamlessLoginDidFail(_ error: NSError)
This method is called by the Nuclei SDK if the seamless login fails.
onNucleiSeamlessLoginRequest()
This method is called by the Nuclei SDK when a Nuclei service is invoked and the user is not logged in. The partner application can process the seamless login for the user.
Additional Notes
Check if User is Logged In
The partner application can check whether the user is logged in or not using the following method:
let isSignedIn = CoreAdapter.isNucleiSignedIn()
If the user is not signed in, you can initiate the seamless login flow as described above.