Swift (iOS/macOS) के लिए OAuth क्लाइंट: OAuthSwift लाइब्रेरी
OAuthSwift iOS, macOS, watchOS और tvOS के लिए Swift अनुप्रयोगों में OAuth 1.0 और OAuth 2.0 प्रोटोकॉल को लागू करने के लिए एक शक्तिशाली और लचीली लाइब्रेरी है। यह डेवलपर्स को जटिल HTTP अनुरोधों, रीडायरेक्ट और टोकन आदान-प्रदान को मैन्युअल रूप से संभाले बिना तृतीय-पक्ष सेवाओं (Google, GitHub, Facebook, Twitter और अन्य) को एकीकृत करने के लिए एक सरल और सहज इंटरफ़ेस प्रदान करती है। लाइब्रेरी पूरी तरह से Swift में लिखी गई है, भाषा के आधुनिक संस्करणों (Swift 5+) का समर्थन करती है और समुदाय द्वारा सक्रिय रूप से बनाए रखी जाती है।
OAuthSwift का मुख्य लाभ boilerplate कोड को कम करना है। डेवलपर को केवल क्लाइंट आईडी (client ID), गुप्त कुंजी (client secret), प्राधिकरण और पुनर्निर्देशन URL प्रदान करने की आवश्यकता है, और लाइब्रेरी स्वयं access-टोकन प्राप्त करने की प्रक्रिया का प्रबंधन करती है। OAuthSwift OAuth 2.0 के सभी सामान्य ग्रांट का समर्थन करता है: Authorization Code, Implicit, Client Credentials और Resource Owner Password Credentials। OAuth 1.0 के लिए HMAC-SHA1, RSA-SHA1 और Plaintext हस्ताक्षर विधियों का पूर्ण समर्थन लागू किया गया है।
स्थापना और कनेक्शन
लाइब्रेरी Swift Package Manager (SPM), CocoaPods और Carthage के माध्यम से वितरित की जाती है। अनुशंसित तरीका SPM है:
// Xcode में: File → Swift Packages → Add Package Dependency// URL: https://github.com/OAuthSwift/OAuthSwift.git// संस्करण: 2.2.0 और उससे ऊपरकोड में आयात:
import OAuthSwiftOAuth 2.0 का मूल कार्यान्वयन (Google के उदाहरण के साथ)
Authorization Code Flow का उपयोग करके Google के माध्यम से प्राधिकरण का पूरा उदाहरण देखें। पहले Google Cloud Console में एक प्रोजेक्ट बनाना, client ID प्राप्त करना और redirect URI (उदाहरण के लिए, com.example.app:/oauth-callback) कॉन्फ़िगर करना आवश्यक है।
class GoogleAuthManager { private var oauthSwift: OAuth2Swift?
func startGoogleAuth() { oauthSwift = OAuth2Swift( consumerKey: "YOUR_CLIENT_ID", consumerSecret: "YOUR_CLIENT_SECRET", authorizeUrl: "https://accounts.google.com/o/oauth2/auth", accessTokenUrl: "https://oauth2.googleapis.com/token", responseType: "code" )
// अनुरोध पैरामीटर का कॉन्फ़िगरेशन let state = generateState(withLength: 20) let scope = "https://www.googleapis.com/auth/userinfo.profile"
// प्राधिकरण प्रारंभ करें oauthSwift?.authorize( withCallbackURL: URL(string: "com.example.app:/oauth-callback")!, scope: scope, state: state, parameters: [:], headers: nil ) { result in switch result { case .success(let (credential, response, parameters)): print("Access Token: \\(credential.oauthToken)") print("Refresh Token: \\(credential.oauthRefreshToken)") self.fetchUserInfo(credential: credential) case .failure(let error): print("प्राधिकरण त्रुटि: \\(error.localizedDescription)") } } }
private func fetchUserInfo(credential: OAuthSwiftCredential) { let url = "https://www.googleapis.com/oauth2/v2/userinfo" oauthSwift?.client.get(url, parameters: [:]) { result in switch result { case .success(let response): if let json = try? JSONSerialization.jsonObject(with: response.data) as? [String: Any] { print("Email: \\(json["email"] ?? "")") print("Name: \\(json["name"] ?? "")") } case .failure(let error): print("डेटा प्राप्त करने में त्रुटि: \\(error)") } } }}URL स्कीमा को संभालना (iOS)
callback-URL के सही काम करने के लिए AppDelegate या SceneDelegate को कॉन्फ़िगर करना आवश्यक है:
// AppDelegate.swiftfunc applic