Cidaas 1.1.4

Cidaas 1.1.4

Maintained by [Cidaas].



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

Cidaas 1.1.4

  • 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

When you are integrating your own Business App with, you may want to modularize the interactions and attributes. There are like Scope, Roles, Grant-Types, re-direct URLs etc., that you may want to group into one configuration/settings. This can be done by creating App or Client.

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