---
title: ASWebAuthenticationSession
description: 'ASWebAuthenticationSession का उपयोग करके iOS पर कार्ड नॉट प्रेजेंट सत्यापन कैप्चर एक्सपीरियंस को कैसे इम्प्लीमेंट करें: प्रमाणीकरण कंट्रोलर, सेशन सेटअप, और आवश्यक अनुमतियां।'
canonical: https://developer.unico.io/hi/dual-api/developers/regional-solutions/card-not-present-verification/integration/controlling-the-experience/mobile/ios/aswebauthenticationsession
locale: hi
generated_by: markdown-export
---

iOS उपयोग के लिए, ASWebAuthenticationSession का उपयोग करना अनुशंसित तरीकों में से एक है।

लेनदेन बनाने और लेनदेन का लिंक प्राप्त करने के बाद, निम्नलिखित इम्प्लीमेंटेशन की सलाह दी जाती है:

- अपने नियमित फ्लो में (जिसमें कार्ड नॉट प्रेजेंट सत्यापन शामिल है), आप API के माध्यम से जनरेट किए गए लिंक के साथ ASWebAuthenticationSession खोलेंगे।
- आप इस ओपनिंग को उस तरीके से कस्टमाइज़ कर सकते हैं जो आपके ऐप के लिए सबसे उपयुक्त हो।
- आप निगरानी करेंगे कि URL बदला है या नहीं (`redirectUrl` में) और फिर पेज को बंद करेंगे।

फ्लो को काम करने के लिए, आपको निम्नलिखित चरणों का पालन करना होगा:

### चरण 1: पेमेंट प्रमाणीकरण कंट्रोलर बनाना

पहला चरण पेमेंट प्रमाणीकरण कंट्रोलर बनाना है। ऐसा करने के लिए, `IDPayAuthenticationController` (या आपकी पसंद का कोई अन्य नाम) नामक एक क्लास बनाएं।

इसके बाद, क्लास के शीर्ष पर `AuthenticationServices` फ्रेमवर्क को इम्पोर्ट करें।

क्लास को `NSObject` के रूप में घोषित करें और `ASWebAuthenticationPresentationContextProviding` प्रोटोकॉल को इम्प्लीमेंट करें।

परिणाम इस प्रकार होना चाहिए:

```swift
import AuthenticationServices

class IDPayAuthenticationController: NSObject, ASWebAuthenticationPresentationContextProviding {
    func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor {
           if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
               if let mainWindow = windowScene.windows.first {
                   return mainWindow
               }
           }
           return ASPresentationAnchor()
       }
}
```

### चरण 2: प्रमाणीकरण इम्प्लीमेंट करना

वह फ़ाइल खोलें जहां आप प्रमाणीकरण करेंगे और आवश्यक इम्पोर्ट जोड़ें (हमारे उदाहरण में, हम यह `ContentView.swift` में कर रहे हैं)।

```swift
import SwiftUI
import AuthenticationServices
```

प्रमाणीकरण स्थिति को कंट्रोल करने के लिए, हम एक `@State` प्रॉपर्टी बनाएंगे।

```swift
@State private var isAuthenticated = false
```

`ContentView` स्ट्रक्चर के body के बाहर `IDPayAuthenticationController` क्लास का एक इंस्टेंस बनाएं।

```swift
let idPayController = IDPayAuthenticationController()
```

पेमेंट को वैलिडेट करने के लिए, `authenticatePayment` नामक एक फ़ंक्शन बनाएं।

```swift
func authenticatePayment() {
    guard let url = URL(string: "URL_AUTHENTICATION") else { return }

    var session: ASWebAuthenticationSession?
    session = ASWebAuthenticationSession(url: url, callbackURLScheme: "BUNDLE") { callbackURL, error in
        guard callbackURL != nil else {
            if let error = error {
                return print("Error during authentication: \(error.localizedDescription)")
            }
            return
        }

        // Processes the callback URL to check whether authentication succeeded
        session?.cancel()
        isAuthenticated = true
    }

    session?.presentationContextProvider = idPayController
    session?.prefersEphemeralWebBrowserSession = true
    session?.start()
}
```

:::danger
`URL_AUTHENTICATION` URL को अपने लेनदेन में प्राप्त प्रमाणीकरण URL में बदलना याद रखें, और साथ ही `callbackURLScheme` `BUNDLE` को उस रीडायरेक्ट में बदलें जो आपका लेनदेन बनाते समय प्रदान किया गया था (हम आपके ऐप के Bundle Identifier का उपयोग करने की सलाह देते हैं)।
:::

:::note
प्रति लेनदेन एक यूनीक प्रमाणीकरण सुनिश्चित करने के लिए `prefersEphemeralWebBrowserSession` को `true` पर सेट करना महत्वपूर्ण है।
:::

:::note
सही ढंग से कार्य करने के लिए कुछ अनुमतियां आवश्यक हैं, जैसे कि:
- कैमरा
- जियोलोकेशन
:::

अधिक जानने के लिए, हम आधिकारिक [ASWebAuthenticationSession दस्तावेज़](https://developer.apple.com/documentation/authenticationservices/aswebauthenticationsession) पढ़ने की सलाह देते हैं।