Cidaas 1.1.2

Cidaas 1.1.2

Maintained by [Cidaas].


GitHub

Stars0
Watchers0
Forks0
Issues0
Contributors1
Pull Requests0



 
Depends on:
Alamofire~> 4.7.3
OneTimePassword~> 3.1.4
CryptoSwift~> 0.12
SwiftKeychainWrapper~> 3.0
 

Cidaas 1.1.2

  • By
  • Cidaas

cidaas-sdk-ios-v2

Build Status codecov.io Swift support XCode support CocoaPods Compatible Platform

The steps here will guide you through setting up and managing authentication and authorization in your apps using cidaas SDK.

Table of Contents

Requirements

Operating System Xcode Swift
iOS 10.0 or above 9.0 or above 3.3 or above

Installation

Cidaas is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'Cidaas'

Getting started

The following steps are to be followed to use this cidaas SDK.

Create a plist file named cidaas.plist and fill all the inputs in key value pair. The inputs are mentioned below.

A sample plist file would look like this :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>DomainURL</key>
        <string>Your Domain URL</string>
        <key>RedirectURL</key>
        <string>Your redirect url</string>
        <key>ClientID</key>
        <string>Your client id</string>
    </dict>
</plist>

The following sections will help you to generate some of the information that is needed for plist.

Getting Client Id and urls

You can get this by creating your App in App settings section of cidaas Admin portal. Once you select the right scope and application type, and fill in all mandatory fields, you can use the generated Client ID and redirect URLs.

Initialization

The first step to integrate cidaas sdk is the initialization process.

var cidaas = Cidaas();

or use the shared instance

var cidaas = Cidaas.shared

Usage

Native Browser Login

Classic Login

You can login using your native browser and you will be redirected to the App after successful login. To login with your native browser call loginWithBrowser().

var extraParams = Dictionary<String, String>()
extraParams[scopes]="offline_access phone"
cidaas.loginWithBrowser(delegate: self, extraParams: extraParams) {
    switch $0 {
        case .success(let successResponse):
            // your success code here
            break
        case .failure(let error):
            // your failure code here
            break
    }
}

Social Login

You can also perform social login using your native browser and you will be redirected to the App after successful login. To perform social login call loginWithSocial().

cidaas.loginWithSocial(provider: "your_social_provider", delegate: self) { 
    switch $0 {
        case .success(let successResponse):
            // your success code here
            break
        case .failure(let error):
            // your failure code here
            break
    }
}

where social provider may be either facebook, google, linkedin or any other providers

Use customScheme or universalLinks to return back the control from browser to App.

Note : Don't forget to add the custom scheme url in your App's redirect url section

If you use custom scheme, configure your URL types and resume the SDK from AppDelegate's open url method

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    Cidaas.shared.handleToken(url: url)
    return true
}

If you use universal links, configure your Domain setup and resume the SDK from AppDelegate's userActivity method

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    let url = userActivity.webpageURL!
    Cidaas.shared.handleToken(url: url)
    return true
}

WKWebview integration

Drag and drop an empty view in the storyboard

Change the name of the class in the properties window as CidaasView

Create an IBOutlet for the class and consider this as an object

@IBOutlet var cidaasView: CidaasView! 

Inherit the WKNavigationDelegate and call the methods

func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
    cidaasView.webView(webView, didStartProvisionalNavigation: navigation)
}

func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
    cidaasView.webView(webView, didFail: navigation, withError: error)
}

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    cidaasView.webView(webView, decidePolicyFor: navigationAction, decisionHandler: decisionHandler)
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    cidaasView.webView(webView, didFinish: navigation)
}

    Call the loginWithEmbeddedBrowser() function and get the access token as callback    

cidaasView.loginWithEmbeddedBrowser(delegate: self) {
    switch $0 {
        case .success(let successResponse):
            // your success code here
            break
        case .failure(let error):
            // your failure code here
        break
    }
}  

Screenshots

Screen 1 Screen 2